<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<title>src/viewer/ascii.c</title>
<meta name='robots' content='noindex,nofollow' />
<meta name='generator' content='GLOBAL-6.5.7' />
<meta http-equiv='Content-Style-Type' content='text/css' />
<link rel='stylesheet' type='text/css' href='../style.css' />
</head>
<body>
<!-- beginning of fixed guide -->
<div id='guide'><ul>
<li><a href='#L201'><img class='icon' src='../icons/first.png' alt='[^]' /></a></li>
<li><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[v]' /></a></li>
<li><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a></li>
<li><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a></li>
<li><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a></li>
<li><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a></li>
<li class='standout'><span><a href='../files/src.html'>src</a>/<a href='../files/src--viewer.html'>viewer</a>/ascii.c</span></li>
</ul></div>
<!-- end of fixed guide -->
<a id='TOP' name='TOP'></a><h2 class='header'><a href='../mains.html'>root</a>/<a href='../files/src.html'>src</a>/<a href='../files/src--viewer.html'>viewer</a>/ascii.c</h2>
<em class='comment'>/* <img class='icon' src='../icons/n_left.png' alt='[previous]' /><img class='icon' src='../icons/n_right.png' alt='[next]' /><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><img class='icon' src='../icons/n_top.png' alt='[top]' /><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1 src/viewer/ascii.c'  /> */</em>
<hr />
<h2 class='header'>DEFINITIONS</h2>
This source file includes following definitions.
<ol>
<li><a href='#L201' title='Defined at 201.'>mcview_wcwidth</a></li>
<li><a href='#L221' title='Defined at 221.'>mcview_ismark</a></li>
<li><a href='#L237' title='Defined at 237.'>mcview_is_non_spacing_mark</a></li>
<li><a href='#L259' title='Defined at 259.'>mcview_is_spacing_mark</a></li>
<li><a href='#L275' title='Defined at 275.'>mcview_isprint</a></li>
<li><a href='#L291' title='Defined at 291.'>mcview_char_display</a></li>
<li><a href='#L344' title='Defined at 344.'>mcview_get_next_char</a></li>
<li><a href='#L391' title='Defined at 391.'>mcview_get_next_maybe_nroff_char</a></li>
<li><a href='#L474' title='Defined at 474.'>mcview_next_combining_char_sequence</a></li>
<li><a href='#L573' title='Defined at 573.'>mcview_display_line</a></li>
<li><a href='#L768' title='Defined at 768.'>mcview_display_paragraph</a></li>
<li><a href='#L805' title='Defined at 805.'>mcview_wrap_fixup</a></li>
<li><a href='#L849' title='Defined at 849.'>mcview_display_text</a></li>
<li><a href='#L923' title='Defined at 923.'>mcview_ascii_move_down</a></li>
<li><a href='#L972' title='Defined at 972.'>mcview_ascii_move_up</a></li>
<li><a href='#L1022' title='Defined at 1022.'>mcview_ascii_moveto_bol</a></li>
<li><a href='#L1031' title='Defined at 1031.'>mcview_ascii_moveto_eol</a></li>
<li><a href='#L1048' title='Defined at 1048.'>mcview_state_machine_init</a></li>
</ol>
<hr />
<pre>
<a id='L1' name='L1'></a>   1 <em class='comment'>/*</em>
<a id='L2' name='L2'></a>   2 <em class='comment'>   Internal file viewer for the Midnight Commander</em>
<a id='L3' name='L3'></a>   3 <em class='comment'>   Function for plain view</em>
<a id='L4' name='L4'></a>   4 <em class='comment'></em>
<a id='L5' name='L5'></a>   5 <em class='comment'>   Copyright (C) 1994-2020</em>
<a id='L6' name='L6'></a>   6 <em class='comment'>   Free Software Foundation, Inc.</em>
<a id='L7' name='L7'></a>   7 <em class='comment'></em>
<a id='L8' name='L8'></a>   8 <em class='comment'>   Written by:</em>
<a id='L9' name='L9'></a>   9 <em class='comment'>   Miguel de Icaza, 1994, 1995, 1998</em>
<a id='L10' name='L10'></a>  10 <em class='comment'>   Janne Kukonlehto, 1994, 1995</em>
<a id='L11' name='L11'></a>  11 <em class='comment'>   Jakub Jelinek, 1995</em>
<a id='L12' name='L12'></a>  12 <em class='comment'>   Joseph M. Hinkle, 1996</em>
<a id='L13' name='L13'></a>  13 <em class='comment'>   Norbert Warmuth, 1997</em>
<a id='L14' name='L14'></a>  14 <em class='comment'>   Pavel Machek, 1998</em>
<a id='L15' name='L15'></a>  15 <em class='comment'>   Roland Illig &lt;roland.illig@gmx.de&gt;, 2004, 2005</em>
<a id='L16' name='L16'></a>  16 <em class='comment'>   Slava Zanko &lt;slavazanko@google.com&gt;, 2009</em>
<a id='L17' name='L17'></a>  17 <em class='comment'>   Andrew Borodin &lt;aborodin@vmail.ru&gt;, 2009-2014</em>
<a id='L18' name='L18'></a>  18 <em class='comment'>   Ilia Maslakov &lt;il.smind@gmail.com&gt;, 2009</em>
<a id='L19' name='L19'></a>  19 <em class='comment'>   Rewritten almost from scratch by:</em>
<a id='L20' name='L20'></a>  20 <em class='comment'>   Egmont Koblinger &lt;egmont@gmail.com&gt;, 2014</em>
<a id='L21' name='L21'></a>  21 <em class='comment'></em>
<a id='L22' name='L22'></a>  22 <em class='comment'>   This file is part of the Midnight Commander.</em>
<a id='L23' name='L23'></a>  23 <em class='comment'></em>
<a id='L24' name='L24'></a>  24 <em class='comment'>   The Midnight Commander is free software: you can redistribute it</em>
<a id='L25' name='L25'></a>  25 <em class='comment'>   and/or modify it under the terms of the GNU General Public License as</em>
<a id='L26' name='L26'></a>  26 <em class='comment'>   published by the Free Software Foundation, either version 3 of the License,</em>
<a id='L27' name='L27'></a>  27 <em class='comment'>   or (at your option) any later version.</em>
<a id='L28' name='L28'></a>  28 <em class='comment'></em>
<a id='L29' name='L29'></a>  29 <em class='comment'>   The Midnight Commander is distributed in the hope that it will be useful,</em>
<a id='L30' name='L30'></a>  30 <em class='comment'>   but WITHOUT ANY WARRANTY; without even the implied warranty of</em>
<a id='L31' name='L31'></a>  31 <em class='comment'>   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</em>
<a id='L32' name='L32'></a>  32 <em class='comment'>   GNU General Public License for more details.</em>
<a id='L33' name='L33'></a>  33 <em class='comment'></em>
<a id='L34' name='L34'></a>  34 <em class='comment'>   You should have received a copy of the GNU General Public License</em>
<a id='L35' name='L35'></a>  35 <em class='comment'>   along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</em>
<a id='L36' name='L36'></a>  36 <em class='comment'></em>
<a id='L37' name='L37'></a>  37 <em class='comment'>   ------------------------------------------------------------------------------------------------</em>
<a id='L38' name='L38'></a>  38 <em class='comment'></em>
<a id='L39' name='L39'></a>  39 <em class='comment'>   The viewer is implemented along the following design principles:</em>
<a id='L40' name='L40'></a>  40 <em class='comment'></em>
<a id='L41' name='L41'></a>  41 <em class='comment'>   Goals: Always display simple scripts, double wide (CJK), combining accents and spacing marks</em>
<a id='L42' name='L42'></a>  42 <em class='comment'>   (often used e.g. in Devanagari) perfectly. Make the arrow keys always work correctly.</em>
<a id='L43' name='L43'></a>  43 <em class='comment'></em>
<a id='L44' name='L44'></a>  44 <em class='comment'>   Absolutely non-goal: RTL.</em>
<a id='L45' name='L45'></a>  45 <em class='comment'></em>
<a id='L46' name='L46'></a>  46 <em class='comment'>   Terminology:</em>
<a id='L47' name='L47'></a>  47 <em class='comment'></em>
<a id='L48' name='L48'></a>  48 <em class='comment'>   - A "paragraph" is the text between two adjacent newline characters. A "line" or "row" is a</em>
<a id='L49' name='L49'></a>  49 <em class='comment'>   visual row on the screen. In wrap mode, the viewer formats a paragraph into one or more lines.</em>
<a id='L50' name='L50'></a>  50 <em class='comment'></em>
<a id='L51' name='L51'></a>  51 <em class='comment'>   - The Unicode glossary &lt;http://www.unicode.org/glossary/&gt; doesn't seem to have a notion of "base</em>
<a id='L52' name='L52'></a>  52 <em class='comment'>   character followed by zero or more combining characters". The closest matches are "Combining</em>
<a id='L53' name='L53'></a>  53 <em class='comment'>   Character Sequence" meaning a base character followed by one or more combining characters, or</em>
<a id='L54' name='L54'></a>  54 <em class='comment'>   "Grapheme" which seems to exclude non-printable characters such as newline. In this file,</em>
<a id='L55' name='L55'></a>  55 <em class='comment'>   "combining character sequence" (or any obvious abbreviation thereof) means a base character</em>
<a id='L56' name='L56'></a>  56 <em class='comment'>   followed by zero or more (up to a current limit of 4) combining characters.</em>
<a id='L57' name='L57'></a>  57 <em class='comment'></em>
<a id='L58' name='L58'></a>  58 <em class='comment'>   ------------------------------------------------------------------------------------------------</em>
<a id='L59' name='L59'></a>  59 <em class='comment'></em>
<a id='L60' name='L60'></a>  60 <em class='comment'>   The parser-formatter is designed to be stateless across paragraphs. This is so that we can walk</em>
<a id='L61' name='L61'></a>  61 <em class='comment'>   backwards without having to reparse the whole file (although we still need to reparse and</em>
<a id='L62' name='L62'></a>  62 <em class='comment'>   reformat the whole paragraph, but it's a lot better). This principle needs to be changed if we</em>
<a id='L63' name='L63'></a>  63 <em class='comment'>   ever get to address tickets 1849/2977, but then we can still store (for efficiency) the parser</em>
<a id='L64' name='L64'></a>  64 <em class='comment'>   state at the beginning of the paragraph, and safely walk backwards if we don't cross an escape</em>
<a id='L65' name='L65'></a>  65 <em class='comment'>   character.</em>
<a id='L66' name='L66'></a>  66 <em class='comment'></em>
<a id='L67' name='L67'></a>  67 <em class='comment'>   The parser-formatter, however, definitely needs to carry a state across lines. Currently this</em>
<a id='L68' name='L68'></a>  68 <em class='comment'>   state contains:</em>
<a id='L69' name='L69'></a>  69 <em class='comment'></em>
<a id='L70' name='L70'></a>  70 <em class='comment'>   - The logical column (as if we didn't wrap). This is used for handling TAB characters after a</em>
<a id='L71' name='L71'></a>  71 <em class='comment'>   wordwrap consistently with less.</em>
<a id='L72' name='L72'></a>  72 <em class='comment'></em>
<a id='L73' name='L73'></a>  73 <em class='comment'>   - Whether the last nroff character was bold or underlined. This is used for displaying the</em>
<a id='L74' name='L74'></a>  74 <em class='comment'>   ambiguous _\b_ sequence consistently with less.</em>
<a id='L75' name='L75'></a>  75 <em class='comment'></em>
<a id='L76' name='L76'></a>  76 <em class='comment'>   - Whether the desired way of displaying a lonely combining accent or spacing mark is to place it</em>
<a id='L77' name='L77'></a>  77 <em class='comment'>   over a dotted circle (we do this at the beginning of the paragraph of after a TAB), or to ignore</em>
<a id='L78' name='L78'></a>  78 <em class='comment'>   the combining char and show replacement char for the spacing mark (we do this if e.g. too many</em>
<a id='L79' name='L79'></a>  79 <em class='comment'>   of these were encountered and hence we don't glue them with their base character).</em>
<a id='L80' name='L80'></a>  80 <em class='comment'></em>
<a id='L81' name='L81'></a>  81 <em class='comment'>   - (This state needs to be expanded if e.g. we decide to print verbose replacement characters</em>
<a id='L82' name='L82'></a>  82 <em class='comment'>   (e.g. "&lt;U+0080&gt;") and allow these to wrap around lines.)</em>
<a id='L83' name='L83'></a>  83 <em class='comment'></em>
<a id='L84' name='L84'></a>  84 <em class='comment'>   The state also contains the file offset, as it doesn't make sense to ever know the state without</em>
<a id='L85' name='L85'></a>  85 <em class='comment'>   knowing the corresponding offset.</em>
<a id='L86' name='L86'></a>  86 <em class='comment'></em>
<a id='L87' name='L87'></a>  87 <em class='comment'>   The state depends on various settings (viewer width, encoding, nroff mode, charwrap or wordwrap</em>
<a id='L88' name='L88'></a>  88 <em class='comment'>   mode (if we'll have that one day) etc.), needs to be recomputed if any of these changes.</em>
<a id='L89' name='L89'></a>  89 <em class='comment'></em>
<a id='L90' name='L90'></a>  90 <em class='comment'>   Walking forwards is usually relatively easy both in the file and on the screen. Walking</em>
<a id='L91' name='L91'></a>  91 <em class='comment'>   backwards within a paragraph would only be possible in some special cases and even then it would</em>
<a id='L92' name='L92'></a>  92 <em class='comment'>   be painful, so we always walk back to the beginning of the paragraph and reparse-reformat from</em>
<a id='L93' name='L93'></a>  93 <em class='comment'>   there.</em>
<a id='L94' name='L94'></a>  94 <em class='comment'></em>
<a id='L95' name='L95'></a>  95 <em class='comment'>   (Walking back within a line in the file would have at least the following difficulties: handling</em>
<a id='L96' name='L96'></a>  96 <em class='comment'>   the parser state; processing invalid UTF-8; processing invalid nroff (e.g. what is "_\bA\bA"?).</em>
<a id='L97' name='L97'></a>  97 <em class='comment'>   Walking back on the display: we wouldn't know where to display the last line of a paragraph, or</em>
<a id='L98' name='L98'></a>  98 <em class='comment'>   where to display a line if its following line starts with a wide (CJK or Tab) character. Long</em>
<a id='L99' name='L99'></a>  99 <em class='comment'>   story short: just forget this approach.)</em>
<a id='L100' name='L100'></a> 100 <em class='comment'></em>
<a id='L101' name='L101'></a> 101 <em class='comment'>   Most important variables:</em>
<a id='L102' name='L102'></a> 102 <em class='comment'></em>
<a id='L103' name='L103'></a> 103 <em class='comment'>   - dpy_start: Both in unwrap and wrap modes this points to the beginning of the topmost displayed</em>
<a id='L104' name='L104'></a> 104 <em class='comment'>   paragraph.</em>
<a id='L105' name='L105'></a> 105 <em class='comment'></em>
<a id='L106' name='L106'></a> 106 <em class='comment'>   - dpy_text_column: Only in unwrap mode, an additional horizontal scroll.</em>
<a id='L107' name='L107'></a> 107 <em class='comment'></em>
<a id='L108' name='L108'></a> 108 <em class='comment'>   - dpy_paragraph_skip_lines: Only in wrap mode, an additional vertical scroll (the number of</em>
<a id='L109' name='L109'></a> 109 <em class='comment'>   lines that are scrolled off at the top from the topmost paragraph).</em>
<a id='L110' name='L110'></a> 110 <em class='comment'></em>
<a id='L111' name='L111'></a> 111 <em class='comment'>   - dpy_state_top: Only in wrap mode, the offset and parser-formatter state at the line where</em>
<a id='L112' name='L112'></a> 112 <em class='comment'>   displaying the file begins is cached here.</em>
<a id='L113' name='L113'></a> 113 <em class='comment'></em>
<a id='L114' name='L114'></a> 114 <em class='comment'>   - dpy_wrap_dirty: If some parameter has changed that makes it necessary to reparse-redisplay the</em>
<a id='L115' name='L115'></a> 115 <em class='comment'>   topmost paragraph.</em>
<a id='L116' name='L116'></a> 116 <em class='comment'></em>
<a id='L117' name='L117'></a> 117 <em class='comment'>   In wrap mode, the three variables "dpy_start", "dpy_paragraph_skip_lines" and "dpy_state_top"</em>
<a id='L118' name='L118'></a> 118 <em class='comment'>   are kept consistent. Think of the first two as the ones describing the position, and the third</em>
<a id='L119' name='L119'></a> 119 <em class='comment'>   as a cached value for better performance so that we don't need to wrap the invisible beginning</em>
<a id='L120' name='L120'></a> 120 <em class='comment'>   of the topmost paragraph over and over again. The third value needs to be recomputed each time a</em>
<a id='L121' name='L121'></a> 121 <em class='comment'>   parameter that influences parsing or displaying the file (e.g. width of screen, encoding, nroff</em>
<a id='L122' name='L122'></a> 122 <em class='comment'>   mode) changes, this is signaled by "dpy_wrap_dirty" to force recomputing "dpy_state_top" (and</em>
<a id='L123' name='L123'></a> 123 <em class='comment'>   clamp "dpy_paragraph_skip_lines" if necessary).</em>
<a id='L124' name='L124'></a> 124 <em class='comment'></em>
<a id='L125' name='L125'></a> 125 <em class='comment'>   ------------------------------------------------------------------------------------------------</em>
<a id='L126' name='L126'></a> 126 <em class='comment'></em>
<a id='L127' name='L127'></a> 127 <em class='comment'>   Help integration</em>
<a id='L128' name='L128'></a> 128 <em class='comment'></em>
<a id='L129' name='L129'></a> 129 <em class='comment'>   I'm planning to port the help viewer to this codebase.</em>
<a id='L130' name='L130'></a> 130 <em class='comment'></em>
<a id='L131' name='L131'></a> 131 <em class='comment'>   Splitting at sections would still happen in the help viewer. It would either copy a section, or</em>
<a id='L132' name='L132'></a> 132 <em class='comment'>   set force_max and a similar force_min to limit displaying to one section only.</em>
<a id='L133' name='L133'></a> 133 <em class='comment'></em>
<a id='L134' name='L134'></a> 134 <em class='comment'>   Parsing the help format would go next to the nroff parser. The colors, alternate character set,</em>
<a id='L135' name='L135'></a> 135 <em class='comment'>   and emitting the version number would go to the "state". (The version number would be</em>
<a id='L136' name='L136'></a> 136 <em class='comment'>   implemented by emitting remaining characters of a buffer in the "state" one by one, without</em>
<a id='L137' name='L137'></a> 137 <em class='comment'>   advancing in the file position.)</em>
<a id='L138' name='L138'></a> 138 <em class='comment'></em>
<a id='L139' name='L139'></a> 139 <em class='comment'>   The active link would be drawn similarly to the search highlight. Other than that, the viewer</em>
<a id='L140' name='L140'></a> 140 <em class='comment'>   wouldn't care about links (except for their color). help.c would keep track of which one is</em>
<a id='L141' name='L141'></a> 141 <em class='comment'>   highlighted, how to advance to the next/prev on an arrow, how the scroll offset needs to be</em>
<a id='L142' name='L142'></a> 142 <em class='comment'>   adjusted when moving, etc.</em>
<a id='L143' name='L143'></a> 143 <em class='comment'></em>
<a id='L144' name='L144'></a> 144 <em class='comment'>   Add wrapping at word boundaries to where wrapping at char boundaries happens now.</em>
<a id='L145' name='L145'></a> 145 <em class='comment'> */</em>
<a id='L146' name='L146'></a> 146 
<a id='L147' name='L147'></a> 147 <em class='sharp'>#include</em> &lt;config.h&gt;
<a id='L148' name='L148'></a> 148 
<a id='L149' name='L149'></a> 149 <em class='sharp'>#include</em> "<a href='lib--global.h.html'>lib/global.h</a>"
<a id='L150' name='L150'></a> 150 <em class='sharp'>#include</em> "<a href='lib--tty--tty.h.html'>lib/tty/tty.h</a>"
<a id='L151' name='L151'></a> 151 <em class='sharp'>#include</em> "<a href='lib--skin.h.html'>lib/skin.h</a>"
<a id='L152' name='L152'></a> 152 <em class='sharp'>#include</em> "<a href='../I/util.h.html'>lib/util.h</a>"           <em class='comment'>/* is_printable() */</em>
<a id='L153' name='L153'></a> 153 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L154' name='L154'></a> 154 <em class='sharp'>#include</em> "<a href='lib--charsets.h.html'>lib/charsets.h</a>"
<a id='L155' name='L155'></a> 155 <em class='sharp'>#endif</em>
<a id='L156' name='L156'></a> 156 
<a id='L157' name='L157'></a> 157 <em class='sharp'>#include</em> "<a href='src--setup.h.html'>src/setup.h</a>"          <em class='comment'>/* option_tab_spacing */</em>
<a id='L158' name='L158'></a> 158 
<a id='L159' name='L159'></a> 159 <em class='sharp'>#include</em> "<a href='../I/internal.h.html'>internal.h</a>"
<a id='L160' name='L160'></a> 160 
<a id='L161' name='L161'></a> 161 <em class='comment'>/*** global variables ****************************************************************************/</em>
<a id='L162' name='L162'></a> 162 
<a id='L163' name='L163'></a> 163 <em class='comment'>/*** file scope macro definitions ****************************************************************/</em>
<a id='L164' name='L164'></a> 164 
<a id='L165' name='L165'></a> 165 <em class='comment'>/* The Unicode standard recommends that lonely combining characters are printed over a dotted</em>
<a id='L166' name='L166'></a> 166 <em class='comment'> * circle. If the terminal is not UTF-8, this will be replaced by a dot anyway. */</em>
<a id='L167' name='L167'></a> 167 <em class='sharp'>#define</em> <a href='../S/src--viewer--ascii.c.html#L510' title='Referred from 510 in src/viewer/ascii.c.'>BASE_CHARACTER_FOR_LONELY_COMBINING</a> 0x25CC      <em class='comment'>/* dotted circle */</em>
<a id='L168' name='L168'></a> 168 <em class='sharp'>#define</em> <a href='../R/MAX_COMBINING_CHARS.html' title='Multiple referred from 3 places.'>MAX_COMBINING_CHARS</a> 4   <em class='comment'>/* both slang and ncurses support exactly 4 */</em>
<a id='L169' name='L169'></a> 169 
<a id='L170' name='L170'></a> 170 <em class='comment'>/* I think anything other than space (e.g. arrows) just introduce visual clutter without actually</em>
<a id='L171' name='L171'></a> 171 <em class='comment'> * adding value. */</em>
<a id='L172' name='L172'></a> 172 <em class='sharp'>#define</em> <a href='../S/src--viewer--ascii.c.html#L706' title='Referred from 706 in src/viewer/ascii.c.'>PARTIAL_CJK_AT_LEFT_MARGIN</a>  ' '
<a id='L173' name='L173'></a> 173 <em class='sharp'>#define</em> <a href='../S/src--viewer--ascii.c.html#L719' title='Referred from 719 in src/viewer/ascii.c.'>PARTIAL_CJK_AT_RIGHT_MARGIN</a> ' '
<a id='L174' name='L174'></a> 174 
<a id='L175' name='L175'></a> 175 <em class='comment'>/*</em>
<a id='L176' name='L176'></a> 176 <em class='comment'> * Wrap mode: This is for safety so that jumping to the end of file (which already includes</em>
<a id='L177' name='L177'></a> 177 <em class='comment'> * scrolling back by a page) and then walking backwards is reasonably fast, even if the file is</em>
<a id='L178' name='L178'></a> 178 <em class='comment'> * extremely large and consists of maybe full zeros or something like that. If there's no newline</em>
<a id='L179' name='L179'></a> 179 <em class='comment'> * found within this limit, just start displaying from there and see what happens. We might get</em>
<a id='L180' name='L180'></a> 180 <em class='comment'> * some displaying parameteres (most importantly the columns) incorrect, but at least will show the</em>
<a id='L181' name='L181'></a> 181 <em class='comment'> * file without spinning the CPU for ages. When scrolling back to that point, the user might see a</em>
<a id='L182' name='L182'></a> 182 <em class='comment'> * garbled first line (even starting with an invalid partial UTF-8), but then walking back by yet</em>
<a id='L183' name='L183'></a> 183 <em class='comment'> * another line should fix it.</em>
<a id='L184' name='L184'></a> 184 <em class='comment'> *</em>
<a id='L185' name='L185'></a> 185 <em class='comment'> * Unwrap mode: This is not used, we wouldn't be able to do anything reasonable without walking</em>
<a id='L186' name='L186'></a> 186 <em class='comment'> * back a whole paragraph (well, view-&gt;data_area.height paragraphs actually).</em>
<a id='L187' name='L187'></a> 187 <em class='comment'> */</em>
<a id='L188' name='L188'></a> 188 <em class='sharp'>#define</em> <a href='../S/src--viewer--ascii.c.html#L999' title='Referred from 999 in src/viewer/ascii.c.'>MAX_BACKWARDS_WALK_IN_PARAGRAPH</a> (100 * 1000)
<a id='L189' name='L189'></a> 189 
<a id='L190' name='L190'></a> 190 <em class='comment'>/*** file scope type declarations ****************************************************************/</em>
<a id='L191' name='L191'></a> 191 
<a id='L192' name='L192'></a> 192 <em class='comment'>/*** file scope variables ************************************************************************/</em>
<a id='L193' name='L193'></a> 193 
<a id='L194' name='L194'></a> 194 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L195' name='L195'></a> 195 <em class='comment'>/*** file scope functions ************************************************************************/</em>
<a id='L196' name='L196'></a> 196 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L197' name='L197'></a> 197 
<a id='L198' name='L198'></a> 198 <em class='comment'>/* TODO: These methods shouldn't be necessary, see ticket 3257 */</em>
<a id='L199' name='L199'></a> 199 
<a id='L200' name='L200'></a> 200 <strong class='reserved'>static</strong> <strong class='reserved'>int</strong>
<a id='L201' name='L201'></a> 201 <a href='../R/mcview_wcwidth.html' title='Multiple referred from 2 places.'>mcview_wcwidth</a> (<strong class='reserved'>const</strong> <a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <strong class='reserved'>int</strong> <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>)
     <em class='comment'>/* <img class='icon' src='../icons/n_left.png' alt='[previous]' /><a href='#L221'><img class='icon' src='../icons/right.png' alt='[next]' /></a><img class='icon' src='../icons/n_first.png' alt='[first]' /><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+201 src/viewer/ascii.c'  /> */</em>
<a id='L202' name='L202'></a> 202 <em class='brace'>{</em>
<a id='L203' name='L203'></a> 203 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L204' name='L204'></a> 204     <strong class='reserved'>if</strong> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/utf8.html' title='Multiple used in 53 places.'>utf8</a>)
<a id='L205' name='L205'></a> 205     <em class='brace'>{</em>
<a id='L206' name='L206'></a> 206         <strong class='reserved'>if</strong> (<a href='../Y/g_unichar_iswide.html' title='Multiple used in 12 places.'>g_unichar_iswide</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>))
<a id='L207' name='L207'></a> 207             <strong class='reserved'>return</strong> 2;
<a id='L208' name='L208'></a> 208         <strong class='reserved'>if</strong> (<a href='../Y/g_unichar_iszerowidth.html' title='Multiple used in 3 places.'>g_unichar_iszerowidth</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>))
<a id='L209' name='L209'></a> 209             <strong class='reserved'>return</strong> 0;
<a id='L210' name='L210'></a> 210     <em class='brace'>}</em>
<a id='L211' name='L211'></a> 211 <em class='sharp'>#else</em>
<a id='L212' name='L212'></a> 212     (<strong class='reserved'>void</strong>) <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>;
<a id='L213' name='L213'></a> 213     (<strong class='reserved'>void</strong>) <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>;
<a id='L214' name='L214'></a> 214 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_CHARSET */</em>
<a id='L215' name='L215'></a> 215     <strong class='reserved'>return</strong> 1;
<a id='L216' name='L216'></a> 216 <em class='brace'>}</em>
<a id='L217' name='L217'></a> 217 
<a id='L218' name='L218'></a> 218 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L219' name='L219'></a> 219 
<a id='L220' name='L220'></a> 220 <strong class='reserved'>static</strong> <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a>
<a id='L221' name='L221'></a> 221 <a href='../R/mcview_ismark.html' title='Multiple referred from 3 places.'>mcview_ismark</a> (<strong class='reserved'>const</strong> <a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <strong class='reserved'>int</strong> <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>)
     <em class='comment'>/* <a href='#L201'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L237'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+221 src/viewer/ascii.c'  /> */</em>
<a id='L222' name='L222'></a> 222 <em class='brace'>{</em>
<a id='L223' name='L223'></a> 223 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L224' name='L224'></a> 224     <strong class='reserved'>if</strong> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/utf8.html' title='Multiple used in 53 places.'>utf8</a>)
<a id='L225' name='L225'></a> 225         <strong class='reserved'>return</strong> g_unichar_ismark (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>);
<a id='L226' name='L226'></a> 226 <em class='sharp'>#else</em>
<a id='L227' name='L227'></a> 227     (<strong class='reserved'>void</strong>) <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>;
<a id='L228' name='L228'></a> 228     (<strong class='reserved'>void</strong>) <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>;
<a id='L229' name='L229'></a> 229 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_CHARSET */</em>
<a id='L230' name='L230'></a> 230     <strong class='reserved'>return</strong> <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L231' name='L231'></a> 231 <em class='brace'>}</em>
<a id='L232' name='L232'></a> 232 
<a id='L233' name='L233'></a> 233 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L234' name='L234'></a> 234 
<a id='L235' name='L235'></a> 235 <em class='comment'>/* actually is_non_spacing_mark_or_enclosing_mark */</em>
<a id='L236' name='L236'></a> 236 <strong class='reserved'>static</strong> <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a>
<a id='L237' name='L237'></a> 237 <a href='../S/src--viewer--ascii.c.html#L631' title='Referred from 631 in src/viewer/ascii.c.'>mcview_is_non_spacing_mark</a> (<strong class='reserved'>const</strong> <a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <strong class='reserved'>int</strong> <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>)
     <em class='comment'>/* <a href='#L221'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L259'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+237 src/viewer/ascii.c'  /> */</em>
<a id='L238' name='L238'></a> 238 <em class='brace'>{</em>
<a id='L239' name='L239'></a> 239 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L240' name='L240'></a> 240     <strong class='reserved'>if</strong> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/utf8.html' title='Multiple used in 53 places.'>utf8</a>)
<a id='L241' name='L241'></a> 241     <em class='brace'>{</em>
<a id='L242' name='L242'></a> 242         <a href='../Y/GUnicodeType.html' title='Multiple used in 2 places.'>GUnicodeType</a> <a href='../Y/type.html' title='Multiple used in 300 places.'>type</a>;
<a id='L243' name='L243'></a> 243 
<a id='L244' name='L244'></a> 244         <a href='../Y/type.html' title='Multiple used in 300 places.'>type</a> = <a href='../Y/g_unichar_type.html' title='Multiple used in 4 places.'>g_unichar_type</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>);
<a id='L245' name='L245'></a> 245 
<a id='L246' name='L246'></a> 246         <strong class='reserved'>return</strong> <a href='../Y/type.html' title='Multiple used in 300 places.'>type</a> == <a href='../Y/G_UNICODE_NON_SPACING_MARK.html' title='Multiple used in 2 places.'>G_UNICODE_NON_SPACING_MARK</a> || <a href='../Y/type.html' title='Multiple used in 300 places.'>type</a> == <a href='../Y/G_UNICODE_ENCLOSING_MARK.html' title='Multiple used in 2 places.'>G_UNICODE_ENCLOSING_MARK</a>;
<a id='L247' name='L247'></a> 247     <em class='brace'>}</em>
<a id='L248' name='L248'></a> 248 <em class='sharp'>#else</em>
<a id='L249' name='L249'></a> 249     (<strong class='reserved'>void</strong>) <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>;
<a id='L250' name='L250'></a> 250     (<strong class='reserved'>void</strong>) <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>;
<a id='L251' name='L251'></a> 251 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_CHARSET */</em>
<a id='L252' name='L252'></a> 252     <strong class='reserved'>return</strong> <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L253' name='L253'></a> 253 <em class='brace'>}</em>
<a id='L254' name='L254'></a> 254 
<a id='L255' name='L255'></a> 255 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L256' name='L256'></a> 256 
<a id='L257' name='L257'></a> 257 <em class='sharp'>#if</em> 0
<a id='L258' name='L258'></a> 258 <strong class='reserved'>static</strong> <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a>
<a id='L259' name='L259'></a> 259 mcview_is_spacing_mark (<strong class='reserved'>const</strong> <a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <strong class='reserved'>int</strong> <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>)
     <em class='comment'>/* <a href='#L237'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L275'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+259 src/viewer/ascii.c'  /> */</em>
<a id='L260' name='L260'></a> 260 <em class='brace'>{</em>
<a id='L261' name='L261'></a> 261 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L262' name='L262'></a> 262     <strong class='reserved'>if</strong> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/utf8.html' title='Multiple used in 53 places.'>utf8</a>)
<a id='L263' name='L263'></a> 263         <strong class='reserved'>return</strong> <a href='../Y/g_unichar_type.html' title='Multiple used in 4 places.'>g_unichar_type</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>) == <a href='../Y/G_UNICODE_SPACING_MARK.html' title='Multiple used in 3 places.'>G_UNICODE_SPACING_MARK</a>;
<a id='L264' name='L264'></a> 264 <em class='sharp'>#else</em>
<a id='L265' name='L265'></a> 265     (<strong class='reserved'>void</strong>) <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>;
<a id='L266' name='L266'></a> 266     (<strong class='reserved'>void</strong>) <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>;
<a id='L267' name='L267'></a> 267 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_CHARSET */</em>
<a id='L268' name='L268'></a> 268     <strong class='reserved'>return</strong> <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L269' name='L269'></a> 269 <em class='brace'>}</em>
<a id='L270' name='L270'></a> 270 <em class='sharp'>#endif</em> <em class='comment'>/* 0 */</em>
<a id='L271' name='L271'></a> 271 
<a id='L272' name='L272'></a> 272 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L273' name='L273'></a> 273 
<a id='L274' name='L274'></a> 274 <strong class='reserved'>static</strong> <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a>
<a id='L275' name='L275'></a> 275 <a href='../R/mcview_isprint.html' title='Multiple referred from 5 places.'>mcview_isprint</a> (<strong class='reserved'>const</strong> <a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <strong class='reserved'>int</strong> <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>)
     <em class='comment'>/* <a href='#L259'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L291'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+275 src/viewer/ascii.c'  /> */</em>
<a id='L276' name='L276'></a> 276 <em class='brace'>{</em>
<a id='L277' name='L277'></a> 277 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L278' name='L278'></a> 278     <strong class='reserved'>if</strong> (!<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/utf8.html' title='Multiple used in 53 places.'>utf8</a>)
<a id='L279' name='L279'></a> 279         <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a> = <a href='../S/lib--charsets.c.html#L492' title='Defined at 492 in lib/charsets.c.'>convert_from_8bit_to_utf_c</a> ((<strong class='reserved'>unsigned</strong> <strong class='reserved'>char</strong>) <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>, <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/converter.html' title='Multiple used in 70 places.'>converter</a>);
<a id='L280' name='L280'></a> 280     <strong class='reserved'>return</strong> <a href='../Y/g_unichar_isprint.html' title='Multiple used in 14 places.'>g_unichar_isprint</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>);
<a id='L281' name='L281'></a> 281 <em class='sharp'>#else</em>
<a id='L282' name='L282'></a> 282     (<strong class='reserved'>void</strong>) <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>;
<a id='L283' name='L283'></a> 283     <em class='comment'>/* TODO this is very-very buggy by design: ticket 3257 comments 0-1 */</em>
<a id='L284' name='L284'></a> 284     <strong class='reserved'>return</strong> <a href='../S/lib--util.c.html#L227' title='Defined at 227 in lib/util.c.'>is_printable</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>);
<a id='L285' name='L285'></a> 285 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_CHARSET */</em>
<a id='L286' name='L286'></a> 286 <em class='brace'>}</em>
<a id='L287' name='L287'></a> 287 
<a id='L288' name='L288'></a> 288 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L289' name='L289'></a> 289 
<a id='L290' name='L290'></a> 290 <strong class='reserved'>static</strong> <strong class='reserved'>int</strong>
<a id='L291' name='L291'></a> 291 <a href='../S/src--viewer--ascii.c.html#L687' title='Referred from 687 in src/viewer/ascii.c.'>mcview_char_display</a> (<strong class='reserved'>const</strong> <a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <strong class='reserved'>int</strong> <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>, <strong class='reserved'>char</strong> *<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>)
     <em class='comment'>/* <a href='#L275'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L344'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+291 src/viewer/ascii.c'  /> */</em>
<a id='L292' name='L292'></a> 292 <em class='brace'>{</em>
<a id='L293' name='L293'></a> 293 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L294' name='L294'></a> 294     <strong class='reserved'>if</strong> (<a href='../Y/mc_global.html' title='Multiple used in 619 places.'>mc_global</a>.<a href='../Y/utf8_display.html' title='Multiple used in 25 places.'>utf8_display</a>)
<a id='L295' name='L295'></a> 295     <em class='brace'>{</em>
<a id='L296' name='L296'></a> 296         <strong class='reserved'>if</strong> (!<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/utf8.html' title='Multiple used in 53 places.'>utf8</a>)
<a id='L297' name='L297'></a> 297             <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a> = <a href='../S/lib--charsets.c.html#L492' title='Defined at 492 in lib/charsets.c.'>convert_from_8bit_to_utf_c</a> ((<strong class='reserved'>unsigned</strong> <strong class='reserved'>char</strong>) <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>, <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/converter.html' title='Multiple used in 70 places.'>converter</a>);
<a id='L298' name='L298'></a> 298         <strong class='reserved'>if</strong> (!<a href='../Y/g_unichar_isprint.html' title='Multiple used in 14 places.'>g_unichar_isprint</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>))
<a id='L299' name='L299'></a> 299             <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a> = '.';
<a id='L300' name='L300'></a> 300         <strong class='reserved'>return</strong> <a href='../Y/g_unichar_to_utf8.html' title='Multiple used in 15 places.'>g_unichar_to_utf8</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>, <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>);
<a id='L301' name='L301'></a> 301     <em class='brace'>}</em>
<a id='L302' name='L302'></a> 302     <strong class='reserved'>if</strong> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/utf8.html' title='Multiple used in 53 places.'>utf8</a>)
<a id='L303' name='L303'></a> 303     <em class='brace'>{</em>
<a id='L304' name='L304'></a> 304         <strong class='reserved'>if</strong> (<a href='../Y/g_unichar_iswide.html' title='Multiple used in 12 places.'>g_unichar_iswide</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>))
<a id='L305' name='L305'></a> 305         <em class='brace'>{</em>
<a id='L306' name='L306'></a> 306             <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>[0] = <a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a>[1] = '.';
<a id='L307' name='L307'></a> 307             <strong class='reserved'>return</strong> 2;
<a id='L308' name='L308'></a> 308         <em class='brace'>}</em>
<a id='L309' name='L309'></a> 309         <strong class='reserved'>if</strong> (<a href='../Y/g_unichar_iszerowidth.html' title='Multiple used in 3 places.'>g_unichar_iszerowidth</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>))
<a id='L310' name='L310'></a> 310             <strong class='reserved'>return</strong> 0;
<a id='L311' name='L311'></a> 311         <em class='comment'>/* TODO the is_printable check below will be broken for this */</em>
<a id='L312' name='L312'></a> 312         <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a> = <a href='../S/lib--charsets.c.html#L460' title='Defined at 460 in lib/charsets.c.'>convert_from_utf_to_current_c</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>, <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/converter.html' title='Multiple used in 70 places.'>converter</a>);
<a id='L313' name='L313'></a> 313     <em class='brace'>}</em>
<a id='L314' name='L314'></a> 314     <strong class='reserved'>else</strong>
<a id='L315' name='L315'></a> 315     <em class='brace'>{</em>
<a id='L316' name='L316'></a> 316         <em class='comment'>/* TODO the is_printable check below will be broken for this */</em>
<a id='L317' name='L317'></a> 317         <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a> = <a href='../S/lib--charsets.h.html#L79' title='Defined at 79 in lib/charsets.h.'>convert_to_display_c</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>);
<a id='L318' name='L318'></a> 318     <em class='brace'>}</em>
<a id='L319' name='L319'></a> 319 <em class='sharp'>#else</em>
<a id='L320' name='L320'></a> 320     (<strong class='reserved'>void</strong>) <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>;
<a id='L321' name='L321'></a> 321 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_CHARSET */</em>
<a id='L322' name='L322'></a> 322     <em class='comment'>/* TODO this is very-very buggy by design: ticket 3257 comments 0-1 */</em>
<a id='L323' name='L323'></a> 323     <strong class='reserved'>if</strong> (!<a href='../S/lib--util.c.html#L227' title='Defined at 227 in lib/util.c.'>is_printable</a> (<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>))
<a id='L324' name='L324'></a> 324         <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a> = '.';
<a id='L325' name='L325'></a> 325     *<a href='../Y/s.html' title='Multiple used in 1155 places.'>s</a> = <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>;
<a id='L326' name='L326'></a> 326     <strong class='reserved'>return</strong> 1;
<a id='L327' name='L327'></a> 327 <em class='brace'>}</em>
<a id='L328' name='L328'></a> 328 
<a id='L329' name='L329'></a> 329 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L330' name='L330'></a> 330 
<a id='L331' name='L331'></a> 331 <em class='comment'>/**</em>
<a id='L332' name='L332'></a> 332 <em class='comment'> * Just for convenience, a common interface in front of mcview_get_utf and mcview_get_byte, so that</em>
<a id='L333' name='L333'></a> 333 <em class='comment'> * the caller doesn't have to care about utf8 vs 8-bit modes.</em>
<a id='L334' name='L334'></a> 334 <em class='comment'> *</em>
<a id='L335' name='L335'></a> 335 <em class='comment'> * Normally: stores c, updates state, returns TRUE.</em>
<a id='L336' name='L336'></a> 336 <em class='comment'> * At EOF: state is unchanged, c is undefined, returns FALSE.</em>
<a id='L337' name='L337'></a> 337 <em class='comment'> *</em>
<a id='L338' name='L338'></a> 338 <em class='comment'> * Just as with mcview_get_utf(), invalid UTF-8 is reported using negative integers.</em>
<a id='L339' name='L339'></a> 339 <em class='comment'> *</em>
<a id='L340' name='L340'></a> 340 <em class='comment'> * Also, temporary hack: handle force_max here.</em>
<a id='L341' name='L341'></a> 341 <em class='comment'> * TODO: move it to lower layers (datasource.c)?</em>
<a id='L342' name='L342'></a> 342 <em class='comment'> */</em>
<a id='L343' name='L343'></a> 343 <strong class='reserved'>static</strong> <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a>
<a id='L344' name='L344'></a> 344 <a href='../R/mcview_get_next_char.html' title='Multiple referred from 4 places.'>mcview_get_next_char</a> (<a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> * <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <strong class='reserved'>int</strong> *<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>)
     <em class='comment'>/* <a href='#L291'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L391'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+344 src/viewer/ascii.c'  /> */</em>
<a id='L345' name='L345'></a> 345 <em class='brace'>{</em>
<a id='L346' name='L346'></a> 346     <em class='comment'>/* Pretend EOF if we reached force_max */</em>
<a id='L347' name='L347'></a> 347     <strong class='reserved'>if</strong> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/force_max.html' title='Multiple used in 7 places.'>force_max</a> &gt;= 0 &amp;&amp; <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a> &gt;= <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/force_max.html' title='Multiple used in 7 places.'>force_max</a>)
<a id='L348' name='L348'></a> 348         <strong class='reserved'>return</strong> <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L349' name='L349'></a> 349 
<a id='L350' name='L350'></a> 350 <em class='sharp'>#ifdef</em> <a href='../S/tests--lib--vfs--tempdir.c.html#L31' title='Defined at 31 in tests/lib/vfs/tempdir.c.'>HAVE_CHARSET</a>
<a id='L351' name='L351'></a> 351     <strong class='reserved'>if</strong> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/utf8.html' title='Multiple used in 53 places.'>utf8</a>)
<a id='L352' name='L352'></a> 352     <em class='brace'>{</em>
<a id='L353' name='L353'></a> 353         <strong class='reserved'>int</strong> <a href='../Y/char_length.html' title='Multiple used in 70 places.'>char_length</a> = 0;
<a id='L354' name='L354'></a> 354 
<a id='L355' name='L355'></a> 355         <strong class='reserved'>if</strong> (!<a href='../S/src--viewer--datasource.c.html#L150' title='Defined at 150 in src/viewer/datasource.c.'>mcview_get_utf</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a>, <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>, &amp;<a href='../Y/char_length.html' title='Multiple used in 70 places.'>char_length</a>))
<a id='L356' name='L356'></a> 356             <strong class='reserved'>return</strong> <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L357' name='L357'></a> 357         <em class='comment'>/* Pretend EOF if we crossed force_max */</em>
<a id='L358' name='L358'></a> 358         <strong class='reserved'>if</strong> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/force_max.html' title='Multiple used in 7 places.'>force_max</a> &gt;= 0 &amp;&amp; <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a> + <a href='../Y/char_length.html' title='Multiple used in 70 places.'>char_length</a> &gt; <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/force_max.html' title='Multiple used in 7 places.'>force_max</a>)
<a id='L359' name='L359'></a> 359             <strong class='reserved'>return</strong> <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L360' name='L360'></a> 360 
<a id='L361' name='L361'></a> 361         <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a> += <a href='../Y/char_length.html' title='Multiple used in 70 places.'>char_length</a>;
<a id='L362' name='L362'></a> 362         <strong class='reserved'>return</strong> <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L363' name='L363'></a> 363     <em class='brace'>}</em>
<a id='L364' name='L364'></a> 364 <em class='sharp'>#endif</em> <em class='comment'>/* HAVE_CHARSET */</em>
<a id='L365' name='L365'></a> 365     <strong class='reserved'>if</strong> (!<a href='../S/src--viewer--inlines.h.html#L96' title='Defined at 96 in src/viewer/inlines.h.'>mcview_get_byte</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a>, <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>))
<a id='L366' name='L366'></a> 366         <strong class='reserved'>return</strong> <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L367' name='L367'></a> 367     <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a>++;
<a id='L368' name='L368'></a> 368     <strong class='reserved'>return</strong> <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L369' name='L369'></a> 369 <em class='brace'>}</em>
<a id='L370' name='L370'></a> 370 
<a id='L371' name='L371'></a> 371 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L372' name='L372'></a> 372 <em class='comment'>/**</em>
<a id='L373' name='L373'></a> 373 <em class='comment'> * This function parses the next nroff character and gives it to you along with its desired color,</em>
<a id='L374' name='L374'></a> 374 <em class='comment'> * so you never have to care about nroff again.</em>
<a id='L375' name='L375'></a> 375 <em class='comment'> *</em>
<a id='L376' name='L376'></a> 376 <em class='comment'> * The nroff mode does the backspace trick for every single character (Unicode codepoint). At least</em>
<a id='L377' name='L377'></a> 377 <em class='comment'> * that's what the GNU groff 1.22 package produces, and that's what less 458 expects. For</em>
<a id='L378' name='L378'></a> 378 <em class='comment'> * double-wide characters (CJK), still only a single backspace is emitted. For combining accents</em>
<a id='L379' name='L379'></a> 379 <em class='comment'> * and such, the print-backspace-print step is repeated for the base character and then for each</em>
<a id='L380' name='L380'></a> 380 <em class='comment'> * accent separately.</em>
<a id='L381' name='L381'></a> 381 <em class='comment'> *</em>
<a id='L382' name='L382'></a> 382 <em class='comment'> * So, the right place for this layer is after the bytes are interpreted in UTF-8, but before</em>
<a id='L383' name='L383'></a> 383 <em class='comment'> * joining a base character with its combining accents.</em>
<a id='L384' name='L384'></a> 384 <em class='comment'> *</em>
<a id='L385' name='L385'></a> 385 <em class='comment'> * Normally: stores c and color, updates state, returns TRUE.</em>
<a id='L386' name='L386'></a> 386 <em class='comment'> * At EOF: state is unchanged, c and color are undefined, returns FALSE.</em>
<a id='L387' name='L387'></a> 387 <em class='comment'> *</em>
<a id='L388' name='L388'></a> 388 <em class='comment'> * color can be null if the caller doesn't care.</em>
<a id='L389' name='L389'></a> 389 <em class='comment'> */</em>
<a id='L390' name='L390'></a> 390 <strong class='reserved'>static</strong> <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a>
<a id='L391' name='L391'></a> 391 <a href='../R/mcview_get_next_maybe_nroff_char.html' title='Multiple referred from 3 places.'>mcview_get_next_maybe_nroff_char</a> (<a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> * <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <strong class='reserved'>int</strong> *<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>, <strong class='reserved'>int</strong> *<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a>)
     <em class='comment'>/* <a href='#L344'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L474'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+391 src/viewer/ascii.c'  /> */</em>
<a id='L392' name='L392'></a> 392 <em class='brace'>{</em>
<a id='L393' name='L393'></a> 393     <a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> <a href='../Y/state_after_nroff.html' title='Multiple used in 7 places.'>state_after_nroff</a>;
<a id='L394' name='L394'></a> 394     <strong class='reserved'>int</strong> <a href='../Y/c2.html' title='Multiple used in 88 places.'>c2</a>, <a href='../Y/c3.html' title='Multiple used in 6 places.'>c3</a>;
<a id='L395' name='L395'></a> 395 
<a id='L396' name='L396'></a> 396     <strong class='reserved'>if</strong> (<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L397' name='L397'></a> 397         *<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a> = <a href='../S/lib--skin.h.html#L79' title='Defined at 79 in lib/skin.h.'>VIEW_NORMAL_COLOR</a>;
<a id='L398' name='L398'></a> 398 
<a id='L399' name='L399'></a> 399     <strong class='reserved'>if</strong> (!<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/mode_flags.html' title='Multiple used in 66 places.'>mode_flags</a>.<a href='../Y/nroff.html' title='Multiple used in 106 places.'>nroff</a>)
<a id='L400' name='L400'></a> 400         <strong class='reserved'>return</strong> <a href='../S/src--viewer--ascii.c.html#L344' title='Defined at 344 in src/viewer/ascii.c.'>mcview_get_next_char</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>);
<a id='L401' name='L401'></a> 401 
<a id='L402' name='L402'></a> 402     <strong class='reserved'>if</strong> (!<a href='../S/src--viewer--ascii.c.html#L344' title='Defined at 344 in src/viewer/ascii.c.'>mcview_get_next_char</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>))
<a id='L403' name='L403'></a> 403         <strong class='reserved'>return</strong> <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L404' name='L404'></a> 404     <em class='comment'>/* Don't allow nroff formatting around CR, LF, TAB or other special chars */</em>
<a id='L405' name='L405'></a> 405     <strong class='reserved'>if</strong> (!<a href='../S/src--viewer--ascii.c.html#L275' title='Defined at 275 in src/viewer/ascii.c.'>mcview_isprint</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, *<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a>))
<a id='L406' name='L406'></a> 406         <strong class='reserved'>return</strong> <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L407' name='L407'></a> 407 
<a id='L408' name='L408'></a> 408     <a href='../Y/state_after_nroff.html' title='Multiple used in 7 places.'>state_after_nroff</a> = *<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>;
<a id='L409' name='L409'></a> 409 
<a id='L410' name='L410'></a> 410     <strong class='reserved'>if</strong> (!<a href='../S/src--viewer--ascii.c.html#L344' title='Defined at 344 in src/viewer/ascii.c.'>mcview_get_next_char</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, &amp;<a href='../Y/state_after_nroff.html' title='Multiple used in 7 places.'>state_after_nroff</a>, &amp;<a href='../Y/c2.html' title='Multiple used in 88 places.'>c2</a>))
<a id='L411' name='L411'></a> 411         <strong class='reserved'>return</strong> <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L412' name='L412'></a> 412     <strong class='reserved'>if</strong> (<a href='../Y/c2.html' title='Multiple used in 88 places.'>c2</a> != '\b')
<a id='L413' name='L413'></a> 413         <strong class='reserved'>return</strong> <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L414' name='L414'></a> 414 
<a id='L415' name='L415'></a> 415     <strong class='reserved'>if</strong> (!<a href='../S/src--viewer--ascii.c.html#L344' title='Defined at 344 in src/viewer/ascii.c.'>mcview_get_next_char</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, &amp;<a href='../Y/state_after_nroff.html' title='Multiple used in 7 places.'>state_after_nroff</a>, &amp;<a href='../Y/c3.html' title='Multiple used in 6 places.'>c3</a>))
<a id='L416' name='L416'></a> 416         <strong class='reserved'>return</strong> <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L417' name='L417'></a> 417     <strong class='reserved'>if</strong> (!<a href='../S/src--viewer--ascii.c.html#L275' title='Defined at 275 in src/viewer/ascii.c.'>mcview_isprint</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/c3.html' title='Multiple used in 6 places.'>c3</a>))
<a id='L418' name='L418'></a> 418         <strong class='reserved'>return</strong> <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L419' name='L419'></a> 419 
<a id='L420' name='L420'></a> 420     <strong class='reserved'>if</strong> (*<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a> == '_' &amp;&amp; <a href='../Y/c3.html' title='Multiple used in 6 places.'>c3</a> == '_')
<a id='L421' name='L421'></a> 421     <em class='brace'>{</em>
<a id='L422' name='L422'></a> 422         *<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a> = <a href='../Y/state_after_nroff.html' title='Multiple used in 7 places.'>state_after_nroff</a>;
<a id='L423' name='L423'></a> 423         <strong class='reserved'>if</strong> (<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L424' name='L424'></a> 424             *<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a> =
<a id='L425' name='L425'></a> 425                 <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/nroff_underscore_is_underlined.html' title='Multiple used in 4 places.'>nroff_underscore_is_underlined</a> ? <a href='../S/lib--skin.h.html#L81' title='Defined at 81 in lib/skin.h.'>VIEW_UNDERLINED_COLOR</a> : <a href='../S/lib--skin.h.html#L80' title='Defined at 80 in lib/skin.h.'>VIEW_BOLD_COLOR</a>;
<a id='L426' name='L426'></a> 426     <em class='brace'>}</em>
<a id='L427' name='L427'></a> 427     <strong class='reserved'>else</strong> <strong class='reserved'>if</strong> (*<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a> == <a href='../Y/c3.html' title='Multiple used in 6 places.'>c3</a>)
<a id='L428' name='L428'></a> 428     <em class='brace'>{</em>
<a id='L429' name='L429'></a> 429         *<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a> = <a href='../Y/state_after_nroff.html' title='Multiple used in 7 places.'>state_after_nroff</a>;
<a id='L430' name='L430'></a> 430         <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/nroff_underscore_is_underlined.html' title='Multiple used in 4 places.'>nroff_underscore_is_underlined</a> = <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L431' name='L431'></a> 431         <strong class='reserved'>if</strong> (<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L432' name='L432'></a> 432             *<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a> = <a href='../S/lib--skin.h.html#L80' title='Defined at 80 in lib/skin.h.'>VIEW_BOLD_COLOR</a>;
<a id='L433' name='L433'></a> 433     <em class='brace'>}</em>
<a id='L434' name='L434'></a> 434     <strong class='reserved'>else</strong> <strong class='reserved'>if</strong> (*<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a> == '_')
<a id='L435' name='L435'></a> 435     <em class='brace'>{</em>
<a id='L436' name='L436'></a> 436         *<a href='../Y/c.html' title='Multiple used in 1020 places.'>c</a> = <a href='../Y/c3.html' title='Multiple used in 6 places.'>c3</a>;
<a id='L437' name='L437'></a> 437         *<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a> = <a href='../Y/state_after_nroff.html' title='Multiple used in 7 places.'>state_after_nroff</a>;
<a id='L438' name='L438'></a> 438         <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/nroff_underscore_is_underlined.html' title='Multiple used in 4 places.'>nroff_underscore_is_underlined</a> = <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L439' name='L439'></a> 439         <strong class='reserved'>if</strong> (<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L440' name='L440'></a> 440             *<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a> = <a href='../S/lib--skin.h.html#L81' title='Defined at 81 in lib/skin.h.'>VIEW_UNDERLINED_COLOR</a>;
<a id='L441' name='L441'></a> 441     <em class='brace'>}</em>
<a id='L442' name='L442'></a> 442 
<a id='L443' name='L443'></a> 443     <strong class='reserved'>return</strong> <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L444' name='L444'></a> 444 <em class='brace'>}</em>
<a id='L445' name='L445'></a> 445 
<a id='L446' name='L446'></a> 446 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L447' name='L447'></a> 447 <em class='comment'>/**</em>
<a id='L448' name='L448'></a> 448 <em class='comment'> * Get one base character, along with its combining or spacing mark characters.</em>
<a id='L449' name='L449'></a> 449 <em class='comment'> *</em>
<a id='L450' name='L450'></a> 450 <em class='comment'> * (A spacing mark is a character that extends the base character's width 1 into a combined</em>
<a id='L451' name='L451'></a> 451 <em class='comment'> * character of width 2, yet these two character cells should not be separated. E.g. Devanagari</em>
<a id='L452' name='L452'></a> 452 <em class='comment'> * &lt;U+0939&gt;&lt;U+094B&gt;.)</em>
<a id='L453' name='L453'></a> 453 <em class='comment'> *</em>
<a id='L454' name='L454'></a> 454 <em class='comment'> * This method exists mainly for two reasons. One is to be able to tell if we fit on the current</em>
<a id='L455' name='L455'></a> 455 <em class='comment'> * line or need to wrap to the next one. The other is that both slang and ncurses seem to require</em>
<a id='L456' name='L456'></a> 456 <em class='comment'> * that the character and its combining marks are printed in a single call (or is it just a</em>
<a id='L457' name='L457'></a> 457 <em class='comment'> * limitation of mc's wrapper to them?).</em>
<a id='L458' name='L458'></a> 458 <em class='comment'> *</em>
<a id='L459' name='L459'></a> 459 <em class='comment'> * For convenience, this method takes care of converting CR or CR+LF into LF.</em>
<a id='L460' name='L460'></a> 460 <em class='comment'> * TODO this should probably happen later, when displaying the file?</em>
<a id='L461' name='L461'></a> 461 <em class='comment'> *</em>
<a id='L462' name='L462'></a> 462 <em class='comment'> * Normally: stores cs and color, updates state, returns &gt;= 1 (entries in cs).</em>
<a id='L463' name='L463'></a> 463 <em class='comment'> * At EOF: state is unchanged, cs and color are undefined, returns 0.</em>
<a id='L464' name='L464'></a> 464 <em class='comment'> *</em>
<a id='L465' name='L465'></a> 465 <em class='comment'> * @param view ...</em>
<a id='L466' name='L466'></a> 466 <em class='comment'> * @param state the parser-formatter state machine's state, updated</em>
<a id='L467' name='L467'></a> 467 <em class='comment'> * @param cs store the characters here</em>
<a id='L468' name='L468'></a> 468 <em class='comment'> * @param clen the room available in cs (that is, at most clen-1 combining marks are allowed), must</em>
<a id='L469' name='L469'></a> 469 <em class='comment'> *   be at least 2</em>
<a id='L470' name='L470'></a> 470 <em class='comment'> * @param color if non-NULL, store the color here, taken from the first codepoint's color</em>
<a id='L471' name='L471'></a> 471 <em class='comment'> * @return the number of entries placed in cs, or 0 on EOF</em>
<a id='L472' name='L472'></a> 472 <em class='comment'> */</em>
<a id='L473' name='L473'></a> 473 <strong class='reserved'>static</strong> <strong class='reserved'>int</strong>
<a id='L474' name='L474'></a> 474 <a href='../S/src--viewer--ascii.c.html#L611' title='Referred from 611 in src/viewer/ascii.c.'>mcview_next_combining_char_sequence</a> (<a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> * <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <strong class='reserved'>int</strong> *<a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>,
     <em class='comment'>/* <a href='#L391'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L573'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+474 src/viewer/ascii.c'  /> */</em>
<a id='L475' name='L475'></a> 475                                      <strong class='reserved'>int</strong> <a href='../Y/clen.html' title='Multiple used in 6 places.'>clen</a>, <strong class='reserved'>int</strong> *<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a>)
<a id='L476' name='L476'></a> 476 <em class='brace'>{</em>
<a id='L477' name='L477'></a> 477     <strong class='reserved'>int</strong> <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> = 1;
<a id='L478' name='L478'></a> 478 
<a id='L479' name='L479'></a> 479     <strong class='reserved'>if</strong> (!<a href='../S/src--viewer--ascii.c.html#L391' title='Defined at 391 in src/viewer/ascii.c.'>mcview_get_next_maybe_nroff_char</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>, <a href='../Y/color.html' title='Multiple used in 108 places.'>color</a>))
<a id='L480' name='L480'></a> 480         <strong class='reserved'>return</strong> 0;
<a id='L481' name='L481'></a> 481 
<a id='L482' name='L482'></a> 482     <em class='comment'>/* Process \r and \r\n newlines. */</em>
<a id='L483' name='L483'></a> 483     <strong class='reserved'>if</strong> (<a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0] == '\r')
<a id='L484' name='L484'></a> 484     <em class='brace'>{</em>
<a id='L485' name='L485'></a> 485         <strong class='reserved'>int</strong> <a href='../Y/cnext.html' title='Multiple used in 3 places.'>cnext</a>;
<a id='L486' name='L486'></a> 486 
<a id='L487' name='L487'></a> 487         <a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> <a href='../Y/state_after_crlf.html' title='Multiple used in 3 places.'>state_after_crlf</a> = *<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>;
<a id='L488' name='L488'></a> 488         <strong class='reserved'>if</strong> (<a href='../S/src--viewer--ascii.c.html#L391' title='Defined at 391 in src/viewer/ascii.c.'>mcview_get_next_maybe_nroff_char</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, &amp;<a href='../Y/state_after_crlf.html' title='Multiple used in 3 places.'>state_after_crlf</a>, &amp;<a href='../Y/cnext.html' title='Multiple used in 3 places.'>cnext</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L489' name='L489'></a> 489             &amp;&amp; <a href='../Y/cnext.html' title='Multiple used in 3 places.'>cnext</a> == '\n')
<a id='L490' name='L490'></a> 490             *<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a> = <a href='../Y/state_after_crlf.html' title='Multiple used in 3 places.'>state_after_crlf</a>;
<a id='L491' name='L491'></a> 491         <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0] = '\n';
<a id='L492' name='L492'></a> 492         <strong class='reserved'>return</strong> 1;
<a id='L493' name='L493'></a> 493     <em class='brace'>}</em>
<a id='L494' name='L494'></a> 494 
<a id='L495' name='L495'></a> 495     <em class='comment'>/* We don't want combining over non-printable characters. This includes '\n' and '\t' too. */</em>
<a id='L496' name='L496'></a> 496     <strong class='reserved'>if</strong> (!<a href='../S/src--viewer--ascii.c.html#L275' title='Defined at 275 in src/viewer/ascii.c.'>mcview_isprint</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0]))
<a id='L497' name='L497'></a> 497         <strong class='reserved'>return</strong> 1;
<a id='L498' name='L498'></a> 498 
<a id='L499' name='L499'></a> 499     <strong class='reserved'>if</strong> (<a href='../S/src--viewer--ascii.c.html#L221' title='Defined at 221 in src/viewer/ascii.c.'>mcview_ismark</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0]))
<a id='L500' name='L500'></a> 500     <em class='brace'>{</em>
<a id='L501' name='L501'></a> 501         <strong class='reserved'>if</strong> (!<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/print_lonely_combining.html' title='Multiple used in 5 places.'>print_lonely_combining</a>)
<a id='L502' name='L502'></a> 502         <em class='brace'>{</em>
<a id='L503' name='L503'></a> 503             <em class='comment'>/* First character is combining. Either just return it, ... */</em>
<a id='L504' name='L504'></a> 504             <strong class='reserved'>return</strong> 1;
<a id='L505' name='L505'></a> 505         <em class='brace'>}</em>
<a id='L506' name='L506'></a> 506         <strong class='reserved'>else</strong>
<a id='L507' name='L507'></a> 507         <em class='brace'>{</em>
<a id='L508' name='L508'></a> 508             <em class='comment'>/* or place this (and subsequent combining ones) over a dotted circle. */</em>
<a id='L509' name='L509'></a> 509             <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[1] = <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0];
<a id='L510' name='L510'></a> 510             <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0] = <a href='../S/src--viewer--ascii.c.html#L167' title='Defined at 167 in src/viewer/ascii.c.'>BASE_CHARACTER_FOR_LONELY_COMBINING</a>;
<a id='L511' name='L511'></a> 511             <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> = 2;
<a id='L512' name='L512'></a> 512         <em class='brace'>}</em>
<a id='L513' name='L513'></a> 513     <em class='brace'>}</em>
<a id='L514' name='L514'></a> 514 
<a id='L515' name='L515'></a> 515     <strong class='reserved'>if</strong> (<a href='../S/src--viewer--ascii.c.html#L201' title='Defined at 201 in src/viewer/ascii.c.'>mcview_wcwidth</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0]) == 2)
<a id='L516' name='L516'></a> 516     <em class='brace'>{</em>
<a id='L517' name='L517'></a> 517         <em class='comment'>/* Don't allow combining or spacing mark for wide characters, is this okay? */</em>
<a id='L518' name='L518'></a> 518         <strong class='reserved'>return</strong> 1;
<a id='L519' name='L519'></a> 519     <em class='brace'>}</em>
<a id='L520' name='L520'></a> 520 
<a id='L521' name='L521'></a> 521     <em class='comment'>/* Look for more combining chars. Either at most clen-1 zero-width combining chars,</em>
<a id='L522' name='L522'></a> 522 <em class='comment'>     * or at most 1 spacing mark. Is this logic correct? */</em>
<a id='L523' name='L523'></a> 523     <strong class='reserved'>for</strong> (; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> &lt; <a href='../Y/clen.html' title='Multiple used in 6 places.'>clen</a>; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>++)
<a id='L524' name='L524'></a> 524     <em class='brace'>{</em>
<a id='L525' name='L525'></a> 525         <a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> <a href='../Y/state_after_combining.html' title='Multiple used in 5 places.'>state_after_combining</a>;
<a id='L526' name='L526'></a> 526 
<a id='L527' name='L527'></a> 527         <a href='../Y/state_after_combining.html' title='Multiple used in 5 places.'>state_after_combining</a> = *<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>;
<a id='L528' name='L528'></a> 528         <strong class='reserved'>if</strong> (!<a href='../S/src--viewer--ascii.c.html#L391' title='Defined at 391 in src/viewer/ascii.c.'>mcview_get_next_maybe_nroff_char</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, &amp;<a href='../Y/state_after_combining.html' title='Multiple used in 5 places.'>state_after_combining</a>, &amp;<a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>], <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>))
<a id='L529' name='L529'></a> 529             <strong class='reserved'>return</strong> <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>;
<a id='L530' name='L530'></a> 530         <strong class='reserved'>if</strong> (!<a href='../S/src--viewer--ascii.c.html#L221' title='Defined at 221 in src/viewer/ascii.c.'>mcview_ismark</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>]) || !<a href='../S/src--viewer--ascii.c.html#L275' title='Defined at 275 in src/viewer/ascii.c.'>mcview_isprint</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>]))
<a id='L531' name='L531'></a> 531             <strong class='reserved'>return</strong> <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>;
<a id='L532' name='L532'></a> 532         <strong class='reserved'>if</strong> (<a href='../Y/g_unichar_type.html' title='Multiple used in 4 places.'>g_unichar_type</a> (<a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>]) == <a href='../Y/G_UNICODE_SPACING_MARK.html' title='Multiple used in 3 places.'>G_UNICODE_SPACING_MARK</a>)
<a id='L533' name='L533'></a> 533         <em class='brace'>{</em>
<a id='L534' name='L534'></a> 534             <em class='comment'>/* Only allow as the first combining char. Stop processing in either case. */</em>
<a id='L535' name='L535'></a> 535             <strong class='reserved'>if</strong> (<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> == 1)
<a id='L536' name='L536'></a> 536             <em class='brace'>{</em>
<a id='L537' name='L537'></a> 537                 *<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a> = <a href='../Y/state_after_combining.html' title='Multiple used in 5 places.'>state_after_combining</a>;
<a id='L538' name='L538'></a> 538                 <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>++;
<a id='L539' name='L539'></a> 539             <em class='brace'>}</em>
<a id='L540' name='L540'></a> 540             <strong class='reserved'>return</strong> <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>;
<a id='L541' name='L541'></a> 541         <em class='brace'>}</em>
<a id='L542' name='L542'></a> 542         *<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a> = <a href='../Y/state_after_combining.html' title='Multiple used in 5 places.'>state_after_combining</a>;
<a id='L543' name='L543'></a> 543     <em class='brace'>}</em>
<a id='L544' name='L544'></a> 544     <strong class='reserved'>return</strong> <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>;
<a id='L545' name='L545'></a> 545 <em class='brace'>}</em>
<a id='L546' name='L546'></a> 546 
<a id='L547' name='L547'></a> 547 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L548' name='L548'></a> 548 <em class='comment'>/**</em>
<a id='L549' name='L549'></a> 549 <em class='comment'> * Parse, format and possibly display one visual line of text.</em>
<a id='L550' name='L550'></a> 550 <em class='comment'> *</em>
<a id='L551' name='L551'></a> 551 <em class='comment'> * Formatting starts at the given "state" (which encodes the file offset and parser and formatter's</em>
<a id='L552' name='L552'></a> 552 <em class='comment'> * internal state). In unwrap mode, this should point to the beginning of the paragraph with the</em>
<a id='L553' name='L553'></a> 553 <em class='comment'> * default state, the additional horizontal scrolling is added here. In wrap mode, this should</em>
<a id='L554' name='L554'></a> 554 <em class='comment'> * point to the beginning of the line, with the proper state at that point.</em>
<a id='L555' name='L555'></a> 555 <em class='comment'> *</em>
<a id='L556' name='L556'></a> 556 <em class='comment'> * In wrap mode, if a line ends in a newline, it is consumed, even if it's exactly at the right</em>
<a id='L557' name='L557'></a> 557 <em class='comment'> * edge. In unwrap mode, the whole remaining line, including the newline is consumed. Displaying</em>
<a id='L558' name='L558'></a> 558 <em class='comment'> * the next line should start at "state"'s new value, or if we displayed the bottom line then</em>
<a id='L559' name='L559'></a> 559 <em class='comment'> * state-&gt;offset tells the file offset to be shown in the top bar.</em>
<a id='L560' name='L560'></a> 560 <em class='comment'> *</em>
<a id='L561' name='L561'></a> 561 <em class='comment'> * If "row" is offscreen, don't actually display the line but still update "state" and return the</em>
<a id='L562' name='L562'></a> 562 <em class='comment'> * proper value. This is used by mcview_wrap_move_down to advance in the file.</em>
<a id='L563' name='L563'></a> 563 <em class='comment'> *</em>
<a id='L564' name='L564'></a> 564 <em class='comment'> * @param view ...</em>
<a id='L565' name='L565'></a> 565 <em class='comment'> * @param state the parser-formatter state machine's state, updated</em>
<a id='L566' name='L566'></a> 566 <em class='comment'> * @param row print to this row</em>
<a id='L567' name='L567'></a> 567 <em class='comment'> * @param paragraph_ended store TRUE if paragraph ended by newline or EOF, FALSE if wraps to next</em>
<a id='L568' name='L568'></a> 568 <em class='comment'> *   line</em>
<a id='L569' name='L569'></a> 569 <em class='comment'> * @param linewidth store the width of the line here</em>
<a id='L570' name='L570'></a> 570 <em class='comment'> * @return the number of rows, that is, 0 if we were already at EOF, otherwise 1</em>
<a id='L571' name='L571'></a> 571 <em class='comment'> */</em>
<a id='L572' name='L572'></a> 572 <strong class='reserved'>static</strong> <strong class='reserved'>int</strong>
<a id='L573' name='L573'></a> 573 <a href='../R/mcview_display_line.html' title='Multiple referred from 6 places.'>mcview_display_line</a> (<a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> * <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <strong class='reserved'>int</strong> <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a>,
     <em class='comment'>/* <a href='#L474'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L768'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+573 src/viewer/ascii.c'  /> */</em>
<a id='L574' name='L574'></a> 574                      <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a> * <a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a>, <a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a> * <a href='../Y/linewidth.html' title='Multiple used in 12 places.'>linewidth</a>)
<a id='L575' name='L575'></a> 575 <em class='brace'>{</em>
<a id='L576' name='L576'></a> 576     <strong class='reserved'>const</strong> <a href='../S/src--viewer--internal.h.html#L24' title='Defined at 24 in src/viewer/internal.h.'>screen_dimen</a> <a href='../Y/left.html' title='Multiple used in 73 places.'>left</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/data_area.html' title='Multiple used in 35 places.'>data_area</a>.<a href='../Y/left.html' title='Multiple used in 73 places.'>left</a>;
<a id='L577' name='L577'></a> 577     <strong class='reserved'>const</strong> <a href='../S/src--viewer--internal.h.html#L24' title='Defined at 24 in src/viewer/internal.h.'>screen_dimen</a> <a href='../Y/top.html' title='Multiple used in 103 places.'>top</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/data_area.html' title='Multiple used in 35 places.'>data_area</a>.<a href='../Y/top.html' title='Multiple used in 103 places.'>top</a>;
<a id='L578' name='L578'></a> 578     <strong class='reserved'>const</strong> <a href='../S/src--viewer--internal.h.html#L24' title='Defined at 24 in src/viewer/internal.h.'>screen_dimen</a> <a href='../Y/width.html' title='Multiple used in 278 places.'>width</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/data_area.html' title='Multiple used in 35 places.'>data_area</a>.<a href='../Y/width.html' title='Multiple used in 278 places.'>width</a>;
<a id='L579' name='L579'></a> 579     <strong class='reserved'>const</strong> <a href='../S/src--viewer--internal.h.html#L24' title='Defined at 24 in src/viewer/internal.h.'>screen_dimen</a> <a href='../Y/height.html' title='Multiple used in 97 places.'>height</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/data_area.html' title='Multiple used in 35 places.'>data_area</a>.<a href='../Y/height.html' title='Multiple used in 97 places.'>height</a>;
<a id='L580' name='L580'></a> 580     <a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a> <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/mode_flags.html' title='Multiple used in 66 places.'>mode_flags</a>.<a href='../Y/wrap.html' title='Multiple used in 25 places.'>wrap</a> ? 0 : <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a>;
<a id='L581' name='L581'></a> 581     <a href='../S/src--viewer--internal.h.html#L24' title='Defined at 24 in src/viewer/internal.h.'>screen_dimen</a> <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> = 0;
<a id='L582' name='L582'></a> 582     <strong class='reserved'>int</strong> <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[1 + <a href='../S/src--viewer--ascii.c.html#L168' title='Defined at 168 in src/viewer/ascii.c.'>MAX_COMBINING_CHARS</a>];
<a id='L583' name='L583'></a> 583     <strong class='reserved'>char</strong> <a href='../Y/str.html' title='Multiple used in 587 places.'>str</a>[(1 + <a href='../S/src--viewer--ascii.c.html#L168' title='Defined at 168 in src/viewer/ascii.c.'>MAX_COMBINING_CHARS</a>) * <a href='../S/lib--global.h.html#L134' title='Defined at 134 in lib/global.h.'>UTF8_CHAR_LEN</a> + 1];
<a id='L584' name='L584'></a> 584     <strong class='reserved'>int</strong> <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>, <a href='../Y/j.html' title='Multiple used in 214 places.'>j</a>;
<a id='L585' name='L585'></a> 585 
<a id='L586' name='L586'></a> 586     <strong class='reserved'>if</strong> (<a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L587' name='L587'></a> 587         *<a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a> = <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L588' name='L588'></a> 588 
<a id='L589' name='L589'></a> 589     <strong class='reserved'>if</strong> (!<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/mode_flags.html' title='Multiple used in 66 places.'>mode_flags</a>.<a href='../Y/wrap.html' title='Multiple used in 25 places.'>wrap</a> &amp;&amp; (<a href='../Y/row.html' title='Multiple used in 70 places.'>row</a> &lt; 0 || <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a> &gt;= (<strong class='reserved'>int</strong>) <a href='../Y/height.html' title='Multiple used in 97 places.'>height</a>) &amp;&amp; <a href='../Y/linewidth.html' title='Multiple used in 12 places.'>linewidth</a> == <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L590' name='L590'></a> 590     <em class='brace'>{</em>
<a id='L591' name='L591'></a> 591         <em class='comment'>/* Optimization: Fast forward to the end of the line, rather than carefully</em>
<a id='L592' name='L592'></a> 592 <em class='comment'>         * parsing and then not actually displaying it. */</em>
<a id='L593' name='L593'></a> 593         <a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a> <a href='../Y/eol.html' title='Multiple used in 7 places.'>eol</a>;
<a id='L594' name='L594'></a> 594         <strong class='reserved'>int</strong> <a href='../Y/retval.html' title='Multiple used in 90 places.'>retval</a>;
<a id='L595' name='L595'></a> 595 
<a id='L596' name='L596'></a> 596         <a href='../Y/eol.html' title='Multiple used in 7 places.'>eol</a> = <a href='../S/src--viewer--lib.c.html#L347' title='Defined at 347 in src/viewer/lib.c.'>mcview_eol</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a>);
<a id='L597' name='L597'></a> 597         <a href='../Y/retval.html' title='Multiple used in 90 places.'>retval</a> = (<a href='../Y/eol.html' title='Multiple used in 7 places.'>eol</a> &gt; <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a>) ? 1 : 0;
<a id='L598' name='L598'></a> 598 
<a id='L599' name='L599'></a> 599         <a href='../S/src--viewer--ascii.c.html#L1048' title='Defined at 1048 in src/viewer/ascii.c.'>mcview_state_machine_init</a> (<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <a href='../Y/eol.html' title='Multiple used in 7 places.'>eol</a>);
<a id='L600' name='L600'></a> 600         <strong class='reserved'>return</strong> <a href='../Y/retval.html' title='Multiple used in 90 places.'>retval</a>;
<a id='L601' name='L601'></a> 601     <em class='brace'>}</em>
<a id='L602' name='L602'></a> 602 
<a id='L603' name='L603'></a> 603     <strong class='reserved'>while</strong> (<a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>)
<a id='L604' name='L604'></a> 604     <em class='brace'>{</em>
<a id='L605' name='L605'></a> 605         <strong class='reserved'>int</strong> <a href='../Y/charwidth.html' title='Multiple used in 11 places.'>charwidth</a> = 0;
<a id='L606' name='L606'></a> 606         <a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> <a href='../Y/state_saved.html' title='Multiple used in 3 places.'>state_saved</a>;
<a id='L607' name='L607'></a> 607         <strong class='reserved'>int</strong> <a href='../Y/n.html' title='Multiple used in 370 places.'>n</a>;
<a id='L608' name='L608'></a> 608         <strong class='reserved'>int</strong> <a href='../Y/color.html' title='Multiple used in 108 places.'>color</a>;
<a id='L609' name='L609'></a> 609 
<a id='L610' name='L610'></a> 610         <a href='../Y/state_saved.html' title='Multiple used in 3 places.'>state_saved</a> = *<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>;
<a id='L611' name='L611'></a> 611         <a href='../Y/n.html' title='Multiple used in 370 places.'>n</a> = <a href='../S/src--viewer--ascii.c.html#L474' title='Defined at 474 in src/viewer/ascii.c.'>mcview_next_combining_char_sequence</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>, 1 + <a href='../S/src--viewer--ascii.c.html#L168' title='Defined at 168 in src/viewer/ascii.c.'>MAX_COMBINING_CHARS</a>, &amp;<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a>);
<a id='L612' name='L612'></a> 612         <strong class='reserved'>if</strong> (<a href='../Y/n.html' title='Multiple used in 370 places.'>n</a> == 0)
<a id='L613' name='L613'></a> 613         <em class='brace'>{</em>
<a id='L614' name='L614'></a> 614             <strong class='reserved'>if</strong> (<a href='../Y/linewidth.html' title='Multiple used in 12 places.'>linewidth</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L615' name='L615'></a> 615                 *<a href='../Y/linewidth.html' title='Multiple used in 12 places.'>linewidth</a> = <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a>;
<a id='L616' name='L616'></a> 616             <strong class='reserved'>return</strong> (<a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> &gt; 0) ? 1 : 0;
<a id='L617' name='L617'></a> 617         <em class='brace'>}</em>
<a id='L618' name='L618'></a> 618 
<a id='L619' name='L619'></a> 619         <strong class='reserved'>if</strong> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/search_start.html' title='Multiple used in 115 places.'>search_start</a> &lt;= <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a> &amp;&amp; <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a> &lt; <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/search_end.html' title='Multiple used in 30 places.'>search_end</a>)
<a id='L620' name='L620'></a> 620             <a href='../Y/color.html' title='Multiple used in 108 places.'>color</a> = <a href='../S/lib--skin.h.html#L82' title='Defined at 82 in lib/skin.h.'>VIEW_SELECTED_COLOR</a>;
<a id='L621' name='L621'></a> 621 
<a id='L622' name='L622'></a> 622         <strong class='reserved'>if</strong> (<a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0] == '\n')
<a id='L623' name='L623'></a> 623         <em class='brace'>{</em>
<a id='L624' name='L624'></a> 624             <em class='comment'>/* New line: reset all formatting state for the next paragraph. */</em>
<a id='L625' name='L625'></a> 625             <a href='../S/src--viewer--ascii.c.html#L1048' title='Defined at 1048 in src/viewer/ascii.c.'>mcview_state_machine_init</a> (<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a>);
<a id='L626' name='L626'></a> 626             <strong class='reserved'>if</strong> (<a href='../Y/linewidth.html' title='Multiple used in 12 places.'>linewidth</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L627' name='L627'></a> 627                 *<a href='../Y/linewidth.html' title='Multiple used in 12 places.'>linewidth</a> = <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a>;
<a id='L628' name='L628'></a> 628             <strong class='reserved'>return</strong> 1;
<a id='L629' name='L629'></a> 629         <em class='brace'>}</em>
<a id='L630' name='L630'></a> 630 
<a id='L631' name='L631'></a> 631         <strong class='reserved'>if</strong> (<a href='../S/src--viewer--ascii.c.html#L237' title='Defined at 237 in src/viewer/ascii.c.'>mcview_is_non_spacing_mark</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0]))
<a id='L632' name='L632'></a> 632         <em class='brace'>{</em>
<a id='L633' name='L633'></a> 633             <em class='comment'>/* Lonely combining character. Probably leftover after too many combining chars. Just ignore. */</em>
<a id='L634' name='L634'></a> 634             <strong class='reserved'>continue</strong>;
<a id='L635' name='L635'></a> 635         <em class='brace'>}</em>
<a id='L636' name='L636'></a> 636 
<a id='L637' name='L637'></a> 637         <em class='comment'>/* Nonprintable, or lonely spacing mark */</em>
<a id='L638' name='L638'></a> 638         <strong class='reserved'>if</strong> ((!<a href='../S/src--viewer--ascii.c.html#L275' title='Defined at 275 in src/viewer/ascii.c.'>mcview_isprint</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0]) || <a href='../S/src--viewer--ascii.c.html#L221' title='Defined at 221 in src/viewer/ascii.c.'>mcview_ismark</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0])) &amp;&amp; <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0] != '\t')
<a id='L639' name='L639'></a> 639             <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0] = '.';
<a id='L640' name='L640'></a> 640 
<a id='L641' name='L641'></a> 641         <strong class='reserved'>for</strong> (<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> = 0; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> &lt; <a href='../Y/n.html' title='Multiple used in 370 places.'>n</a>; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>++)
<a id='L642' name='L642'></a> 642             <a href='../Y/charwidth.html' title='Multiple used in 11 places.'>charwidth</a> += <a href='../S/src--viewer--ascii.c.html#L201' title='Defined at 201 in src/viewer/ascii.c.'>mcview_wcwidth</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>]);
<a id='L643' name='L643'></a> 643 
<a id='L644' name='L644'></a> 644         <em class='comment'>/* Adjust the width for TAB. It's handled below along with the normal characters,</em>
<a id='L645' name='L645'></a> 645 <em class='comment'>         * so that it's wrapped consistently with them, and is painted with the proper</em>
<a id='L646' name='L646'></a> 646 <em class='comment'>         * attributes (although currently it can't have a special color). */</em>
<a id='L647' name='L647'></a> 647         <strong class='reserved'>if</strong> (<a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0] == '\t')
<a id='L648' name='L648'></a> 648         <em class='brace'>{</em>
<a id='L649' name='L649'></a> 649             <a href='../Y/charwidth.html' title='Multiple used in 11 places.'>charwidth</a> = <a href='../Y/option_tab_spacing.html' title='Multiple used in 15 places.'>option_tab_spacing</a> - <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/unwrapped_column.html' title='Multiple used in 3 places.'>unwrapped_column</a> % <a href='../Y/option_tab_spacing.html' title='Multiple used in 15 places.'>option_tab_spacing</a>;
<a id='L650' name='L650'></a> 650             <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/print_lonely_combining.html' title='Multiple used in 5 places.'>print_lonely_combining</a> = <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L651' name='L651'></a> 651         <em class='brace'>}</em>
<a id='L652' name='L652'></a> 652         <strong class='reserved'>else</strong>
<a id='L653' name='L653'></a> 653             <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/print_lonely_combining.html' title='Multiple used in 5 places.'>print_lonely_combining</a> = <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L654' name='L654'></a> 654 
<a id='L655' name='L655'></a> 655         <em class='comment'>/* In wrap mode only: We're done with this row if the character sequence wouldn't fit.</em>
<a id='L656' name='L656'></a> 656 <em class='comment'>         * Except if at the first column, because then it wouldn't fit in the next row either.</em>
<a id='L657' name='L657'></a> 657 <em class='comment'>         * In this extreme case let the unwrapped code below do its best to display it. */</em>
<a id='L658' name='L658'></a> 658         <strong class='reserved'>if</strong> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/mode_flags.html' title='Multiple used in 66 places.'>mode_flags</a>.<a href='../Y/wrap.html' title='Multiple used in 25 places.'>wrap</a> &amp;&amp; (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> + <a href='../Y/charwidth.html' title='Multiple used in 11 places.'>charwidth</a> &gt; <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a> + (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/width.html' title='Multiple used in 278 places.'>width</a>
<a id='L659' name='L659'></a> 659             &amp;&amp; <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> &gt; 0)
<a id='L660' name='L660'></a> 660         <em class='brace'>{</em>
<a id='L661' name='L661'></a> 661             *<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a> = <a href='../Y/state_saved.html' title='Multiple used in 3 places.'>state_saved</a>;
<a id='L662' name='L662'></a> 662             <strong class='reserved'>if</strong> (<a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L663' name='L663'></a> 663                 *<a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a> = <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L664' name='L664'></a> 664             <strong class='reserved'>if</strong> (<a href='../Y/linewidth.html' title='Multiple used in 12 places.'>linewidth</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L665' name='L665'></a> 665                 *<a href='../Y/linewidth.html' title='Multiple used in 12 places.'>linewidth</a> = <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a>;
<a id='L666' name='L666'></a> 666             <strong class='reserved'>return</strong> 1;
<a id='L667' name='L667'></a> 667         <em class='brace'>}</em>
<a id='L668' name='L668'></a> 668 
<a id='L669' name='L669'></a> 669         <em class='comment'>/* Display, unless outside of the viewport. */</em>
<a id='L670' name='L670'></a> 670         <strong class='reserved'>if</strong> (<a href='../Y/row.html' title='Multiple used in 70 places.'>row</a> &gt;= 0 &amp;&amp; <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a> &lt; (<strong class='reserved'>int</strong>) <a href='../Y/height.html' title='Multiple used in 97 places.'>height</a>)
<a id='L671' name='L671'></a> 671         <em class='brace'>{</em>
<a id='L672' name='L672'></a> 672             <strong class='reserved'>if</strong> ((<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> &gt;= <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a> &amp;&amp;
<a id='L673' name='L673'></a> 673                 (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> + <a href='../Y/charwidth.html' title='Multiple used in 11 places.'>charwidth</a> &lt;= <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a> + (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/width.html' title='Multiple used in 278 places.'>width</a>)
<a id='L674' name='L674'></a> 674             <em class='brace'>{</em>
<a id='L675' name='L675'></a> 675                 <em class='comment'>/* The combining character sequence fits entirely in the viewport. Print it. */</em>
<a id='L676' name='L676'></a> 676                 <a href='../D/tty_setcolor.html' title='Multiple defined in 2 places.'>tty_setcolor</a> (<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a>);
<a id='L677' name='L677'></a> 677                 <a href='../S/lib--widget--widget-common.h.html#L18' title='Defined at 18 in lib/widget/widget-common.h.'>widget_gotoyx</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/top.html' title='Multiple used in 103 places.'>top</a> + <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a>, <a href='../Y/left.html' title='Multiple used in 73 places.'>left</a> + ((<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> - <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a>));
<a id='L678' name='L678'></a> 678                 <strong class='reserved'>if</strong> (<a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0] == '\t')
<a id='L679' name='L679'></a> 679                 <em class='brace'>{</em>
<a id='L680' name='L680'></a> 680                     <strong class='reserved'>for</strong> (<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> = 0; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> &lt; <a href='../Y/charwidth.html' title='Multiple used in 11 places.'>charwidth</a>; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>++)
<a id='L681' name='L681'></a> 681                         <a href='../D/tty_print_char.html' title='Multiple defined in 2 places.'>tty_print_char</a> (' ');
<a id='L682' name='L682'></a> 682                 <em class='brace'>}</em>
<a id='L683' name='L683'></a> 683                 <strong class='reserved'>else</strong>
<a id='L684' name='L684'></a> 684                 <em class='brace'>{</em>
<a id='L685' name='L685'></a> 685                     <a href='../Y/j.html' title='Multiple used in 214 places.'>j</a> = 0;
<a id='L686' name='L686'></a> 686                     <strong class='reserved'>for</strong> (<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> = 0; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> &lt; <a href='../Y/n.html' title='Multiple used in 370 places.'>n</a>; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>++)
<a id='L687' name='L687'></a> 687                         <a href='../Y/j.html' title='Multiple used in 214 places.'>j</a> += <a href='../S/src--viewer--ascii.c.html#L291' title='Defined at 291 in src/viewer/ascii.c.'>mcview_char_display</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>], <a href='../Y/str.html' title='Multiple used in 587 places.'>str</a> + <a href='../Y/j.html' title='Multiple used in 214 places.'>j</a>);
<a id='L688' name='L688'></a> 688                     <a href='../Y/str.html' title='Multiple used in 587 places.'>str</a>[<a href='../Y/j.html' title='Multiple used in 214 places.'>j</a>] = '\0';
<a id='L689' name='L689'></a> 689                     <em class='comment'>/* This is probably a bug in our tty layer, but tty_print_string</em>
<a id='L690' name='L690'></a> 690 <em class='comment'>                     * normalizes the string, whereas tty_printf doesn't. Don't normalize,</em>
<a id='L691' name='L691'></a> 691 <em class='comment'>                     * since we handle combining characters ourselves correctly, it's</em>
<a id='L692' name='L692'></a> 692 <em class='comment'>                     * better if they are copy-pasted correctly. Ticket 3255. */</em>
<a id='L693' name='L693'></a> 693                     <a href='../D/tty_printf.html' title='Multiple defined in 2 places.'>tty_printf</a> ("%s", <a href='../Y/str.html' title='Multiple used in 587 places.'>str</a>);
<a id='L694' name='L694'></a> 694                 <em class='brace'>}</em>
<a id='L695' name='L695'></a> 695             <em class='brace'>}</em>
<a id='L696' name='L696'></a> 696             <strong class='reserved'>else</strong> <strong class='reserved'>if</strong> ((<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> &lt; <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a> &amp;&amp; (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> + <a href='../Y/charwidth.html' title='Multiple used in 11 places.'>charwidth</a> &gt; <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a>)
<a id='L697' name='L697'></a> 697             <em class='brace'>{</em>
<a id='L698' name='L698'></a> 698                 <em class='comment'>/* The combining character sequence would cross the left edge of the viewport.</em>
<a id='L699' name='L699'></a> 699 <em class='comment'>                 * This cannot happen with wrap mode. Print replacement character(s),</em>
<a id='L700' name='L700'></a> 700 <em class='comment'>                 * or spaces with the correct attributes for partial Tabs. */</em>
<a id='L701' name='L701'></a> 701                 <a href='../D/tty_setcolor.html' title='Multiple defined in 2 places.'>tty_setcolor</a> (<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a>);
<a id='L702' name='L702'></a> 702                 <strong class='reserved'>for</strong> (<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> = <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a>;
<a id='L703' name='L703'></a> 703                      <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> &lt; (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> + <a href='../Y/charwidth.html' title='Multiple used in 11 places.'>charwidth</a> &amp;&amp; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> &lt; <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a> + (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/width.html' title='Multiple used in 278 places.'>width</a>; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>++)
<a id='L704' name='L704'></a> 704                 <em class='brace'>{</em>
<a id='L705' name='L705'></a> 705                     <a href='../S/lib--widget--widget-common.h.html#L18' title='Defined at 18 in lib/widget/widget-common.h.'>widget_gotoyx</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/top.html' title='Multiple used in 103 places.'>top</a> + <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a>, <a href='../Y/left.html' title='Multiple used in 73 places.'>left</a> + (<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> - <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a>));
<a id='L706' name='L706'></a> 706                     <a href='../D/tty_print_anychar.html' title='Multiple defined in 2 places.'>tty_print_anychar</a> ((<a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0] == '\t') ? ' ' : <a href='../S/src--viewer--ascii.c.html#L172' title='Defined at 172 in src/viewer/ascii.c.'>PARTIAL_CJK_AT_LEFT_MARGIN</a>);
<a id='L707' name='L707'></a> 707                 <em class='brace'>}</em>
<a id='L708' name='L708'></a> 708             <em class='brace'>}</em>
<a id='L709' name='L709'></a> 709             <strong class='reserved'>else</strong> <strong class='reserved'>if</strong> ((<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> &lt; <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a> + (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/width.html' title='Multiple used in 278 places.'>width</a> &amp;&amp;
<a id='L710' name='L710'></a> 710                      (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> + <a href='../Y/charwidth.html' title='Multiple used in 11 places.'>charwidth</a> &gt; <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a> + (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/width.html' title='Multiple used in 278 places.'>width</a>)
<a id='L711' name='L711'></a> 711             <em class='brace'>{</em>
<a id='L712' name='L712'></a> 712                 <em class='comment'>/* The combining character sequence would cross the right edge of the viewport</em>
<a id='L713' name='L713'></a> 713 <em class='comment'>                 * and we're not wrapping. Print replacement character(s),</em>
<a id='L714' name='L714'></a> 714 <em class='comment'>                 * or spaces with the correct attributes for partial Tabs. */</em>
<a id='L715' name='L715'></a> 715                 <a href='../D/tty_setcolor.html' title='Multiple defined in 2 places.'>tty_setcolor</a> (<a href='../Y/color.html' title='Multiple used in 108 places.'>color</a>);
<a id='L716' name='L716'></a> 716                 <strong class='reserved'>for</strong> (<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> = <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a>; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> &lt; <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a> + (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/width.html' title='Multiple used in 278 places.'>width</a>; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>++)
<a id='L717' name='L717'></a> 717                 <em class='brace'>{</em>
<a id='L718' name='L718'></a> 718                     <a href='../S/lib--widget--widget-common.h.html#L18' title='Defined at 18 in lib/widget/widget-common.h.'>widget_gotoyx</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/top.html' title='Multiple used in 103 places.'>top</a> + <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a>, <a href='../Y/left.html' title='Multiple used in 73 places.'>left</a> + (<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> - <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a>));
<a id='L719' name='L719'></a> 719                     <a href='../D/tty_print_anychar.html' title='Multiple defined in 2 places.'>tty_print_anychar</a> ((<a href='../Y/cs.html' title='Multiple used in 24 places.'>cs</a>[0] == '\t') ? ' ' : <a href='../S/src--viewer--ascii.c.html#L173' title='Defined at 173 in src/viewer/ascii.c.'>PARTIAL_CJK_AT_RIGHT_MARGIN</a>);
<a id='L720' name='L720'></a> 720                 <em class='brace'>}</em>
<a id='L721' name='L721'></a> 721             <em class='brace'>}</em>
<a id='L722' name='L722'></a> 722         <em class='brace'>}</em>
<a id='L723' name='L723'></a> 723 
<a id='L724' name='L724'></a> 724         <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> += <a href='../Y/charwidth.html' title='Multiple used in 11 places.'>charwidth</a>;
<a id='L725' name='L725'></a> 725         <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/unwrapped_column.html' title='Multiple used in 3 places.'>unwrapped_column</a> += <a href='../Y/charwidth.html' title='Multiple used in 11 places.'>charwidth</a>;
<a id='L726' name='L726'></a> 726 
<a id='L727' name='L727'></a> 727         <strong class='reserved'>if</strong> (!<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/mode_flags.html' title='Multiple used in 66 places.'>mode_flags</a>.<a href='../Y/wrap.html' title='Multiple used in 25 places.'>wrap</a> &amp;&amp; (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/col.html' title='Multiple used in 135 places.'>col</a> &gt;= <a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a> + (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/width.html' title='Multiple used in 278 places.'>width</a>
<a id='L728' name='L728'></a> 728             &amp;&amp; <a href='../Y/linewidth.html' title='Multiple used in 12 places.'>linewidth</a> == <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>)
<a id='L729' name='L729'></a> 729         <em class='brace'>{</em>
<a id='L730' name='L730'></a> 730             <em class='comment'>/* Optimization: Fast forward to the end of the line, rather than carefully</em>
<a id='L731' name='L731'></a> 731 <em class='comment'>             * parsing and then not actually displaying it. */</em>
<a id='L732' name='L732'></a> 732             <a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a> <a href='../Y/eol.html' title='Multiple used in 7 places.'>eol</a>;
<a id='L733' name='L733'></a> 733 
<a id='L734' name='L734'></a> 734             <a href='../Y/eol.html' title='Multiple used in 7 places.'>eol</a> = <a href='../S/src--viewer--lib.c.html#L347' title='Defined at 347 in src/viewer/lib.c.'>mcview_eol</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a>);
<a id='L735' name='L735'></a> 735             <a href='../S/src--viewer--ascii.c.html#L1048' title='Defined at 1048 in src/viewer/ascii.c.'>mcview_state_machine_init</a> (<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <a href='../Y/eol.html' title='Multiple used in 7 places.'>eol</a>);
<a id='L736' name='L736'></a> 736             <strong class='reserved'>return</strong> 1;
<a id='L737' name='L737'></a> 737         <em class='brace'>}</em>
<a id='L738' name='L738'></a> 738     <em class='brace'>}</em>
<a id='L739' name='L739'></a> 739 <em class='brace'>}</em>
<a id='L740' name='L740'></a> 740 
<a id='L741' name='L741'></a> 741 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L742' name='L742'></a> 742 <em class='comment'>/**</em>
<a id='L743' name='L743'></a> 743 <em class='comment'> * Parse, format and possibly display one paragraph (perhaps not from the beginning).</em>
<a id='L744' name='L744'></a> 744 <em class='comment'> *</em>
<a id='L745' name='L745'></a> 745 <em class='comment'> * Formatting starts at the given "state" (which encodes the file offset and parser and formatter's</em>
<a id='L746' name='L746'></a> 746 <em class='comment'> * internal state). In unwrap mode, this should point to the beginning of the paragraph with the</em>
<a id='L747' name='L747'></a> 747 <em class='comment'> * default state, the additional horizontal scrolling is added here. In wrap mode, this may point</em>
<a id='L748' name='L748'></a> 748 <em class='comment'> * to the beginning of the line within a paragraph (to display the partial paragraph at the top),</em>
<a id='L749' name='L749'></a> 749 <em class='comment'> * with the proper state at that point.</em>
<a id='L750' name='L750'></a> 750 <em class='comment'> *</em>
<a id='L751' name='L751'></a> 751 <em class='comment'> * Displaying the next paragraph should start at "state"'s new value, or if we displayed the bottom</em>
<a id='L752' name='L752'></a> 752 <em class='comment'> * line then state-&gt;offset tells the file offset to be shown in the top bar.</em>
<a id='L753' name='L753'></a> 753 <em class='comment'> *</em>
<a id='L754' name='L754'></a> 754 <em class='comment'> * If "row" is negative, don't display the first abs(row) lines and display the rest from the top.</em>
<a id='L755' name='L755'></a> 755 <em class='comment'> * This was a nice idea but it's now unused :)</em>
<a id='L756' name='L756'></a> 756 <em class='comment'> *</em>
<a id='L757' name='L757'></a> 757 <em class='comment'> * If "row" is too large, don't display the paragraph at all but still return the number of lines.</em>
<a id='L758' name='L758'></a> 758 <em class='comment'> * This is used when moving upwards.</em>
<a id='L759' name='L759'></a> 759 <em class='comment'> *</em>
<a id='L760' name='L760'></a> 760 <em class='comment'> * @param view ...</em>
<a id='L761' name='L761'></a> 761 <em class='comment'> * @param state the parser-formatter state machine's state, updated</em>
<a id='L762' name='L762'></a> 762 <em class='comment'> * @param row print starting at this row</em>
<a id='L763' name='L763'></a> 763 <em class='comment'> * @return the number of rows the paragraphs is wrapped to, that is, 0 if we were already at EOF,</em>
<a id='L764' name='L764'></a> 764 <em class='comment'> *   otherwise 1 in unwrap mode, &gt;= 1 in wrap mode. We stop when reaching the bottom of the</em>
<a id='L765' name='L765'></a> 765 <em class='comment'> *   viewport, it's not counted how many more lines the paragraph would occupy</em>
<a id='L766' name='L766'></a> 766 <em class='comment'> */</em>
<a id='L767' name='L767'></a> 767 <strong class='reserved'>static</strong> <strong class='reserved'>int</strong>
<a id='L768' name='L768'></a> 768 <a href='../R/mcview_display_paragraph.html' title='Multiple referred from 2 places.'>mcview_display_paragraph</a> (<a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> * <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <strong class='reserved'>int</strong> <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a>)
     <em class='comment'>/* <a href='#L573'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L805'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+768 src/viewer/ascii.c'  /> */</em>
<a id='L769' name='L769'></a> 769 <em class='brace'>{</em>
<a id='L770' name='L770'></a> 770     <strong class='reserved'>const</strong> <a href='../S/src--viewer--internal.h.html#L24' title='Defined at 24 in src/viewer/internal.h.'>screen_dimen</a> <a href='../Y/height.html' title='Multiple used in 97 places.'>height</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/data_area.html' title='Multiple used in 35 places.'>data_area</a>.<a href='../Y/height.html' title='Multiple used in 97 places.'>height</a>;
<a id='L771' name='L771'></a> 771     <strong class='reserved'>int</strong> <a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a> = 0;
<a id='L772' name='L772'></a> 772 
<a id='L773' name='L773'></a> 773     <strong class='reserved'>while</strong> (<a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>)
<a id='L774' name='L774'></a> 774     <em class='brace'>{</em>
<a id='L775' name='L775'></a> 775         <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a> <a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a>;
<a id='L776' name='L776'></a> 776 
<a id='L777' name='L777'></a> 777         <a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a> += <a href='../S/src--viewer--ascii.c.html#L573' title='Defined at 573 in src/viewer/ascii.c.'>mcview_display_line</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a>, &amp;<a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L778' name='L778'></a> 778         <strong class='reserved'>if</strong> (<a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a>)
<a id='L779' name='L779'></a> 779             <strong class='reserved'>return</strong> <a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a>;
<a id='L780' name='L780'></a> 780 
<a id='L781' name='L781'></a> 781         <strong class='reserved'>if</strong> (<a href='../Y/row.html' title='Multiple used in 70 places.'>row</a> &lt; (<strong class='reserved'>int</strong>) <a href='../Y/height.html' title='Multiple used in 97 places.'>height</a>)
<a id='L782' name='L782'></a> 782         <em class='brace'>{</em>
<a id='L783' name='L783'></a> 783             <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a>++;
<a id='L784' name='L784'></a> 784             <em class='comment'>/* stop if bottom of screen reached */</em>
<a id='L785' name='L785'></a> 785             <strong class='reserved'>if</strong> (<a href='../Y/row.html' title='Multiple used in 70 places.'>row</a> &gt;= (<strong class='reserved'>int</strong>) <a href='../Y/height.html' title='Multiple used in 97 places.'>height</a>)
<a id='L786' name='L786'></a> 786                 <strong class='reserved'>return</strong> <a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a>;
<a id='L787' name='L787'></a> 787         <em class='brace'>}</em>
<a id='L788' name='L788'></a> 788     <em class='brace'>}</em>
<a id='L789' name='L789'></a> 789 <em class='brace'>}</em>
<a id='L790' name='L790'></a> 790 
<a id='L791' name='L791'></a> 791 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L792' name='L792'></a> 792 <em class='comment'>/**</em>
<a id='L793' name='L793'></a> 793 <em class='comment'> * Recompute dpy_state_top from dpy_start and dpy_paragraph_skip_lines. Clamp</em>
<a id='L794' name='L794'></a> 794 <em class='comment'> * dpy_paragraph_skip_lines if necessary.</em>
<a id='L795' name='L795'></a> 795 <em class='comment'> *</em>
<a id='L796' name='L796'></a> 796 <em class='comment'> * This method should be called in wrap mode after changing one of the parsing or formatting</em>
<a id='L797' name='L797'></a> 797 <em class='comment'> * properties (e.g. window width, encoding, nroff), or when switching to wrap mode from unwrap or</em>
<a id='L798' name='L798'></a> 798 <em class='comment'> * hex.</em>
<a id='L799' name='L799'></a> 799 <em class='comment'> *</em>
<a id='L800' name='L800'></a> 800 <em class='comment'> * If we stayed within the same paragraph then try to keep the vertical offset within that</em>
<a id='L801' name='L801'></a> 801 <em class='comment'> * paragraph as well. It might happen though that the paragraph became shorter than our desired</em>
<a id='L802' name='L802'></a> 802 <em class='comment'> * vertical position, in that case move to its last row.</em>
<a id='L803' name='L803'></a> 803 <em class='comment'> */</em>
<a id='L804' name='L804'></a> 804 <strong class='reserved'>static</strong> <strong class='reserved'>void</strong>
<a id='L805' name='L805'></a> 805 <a href='../S/src--viewer--ascii.c.html#L871' title='Referred from 871 in src/viewer/ascii.c.'>mcview_wrap_fixup</a> (<a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>)
     <em class='comment'>/* <a href='#L768'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L849'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+805 src/viewer/ascii.c'  /> */</em>
<a id='L806' name='L806'></a> 806 <em class='brace'>{</em>
<a id='L807' name='L807'></a> 807     <strong class='reserved'>int</strong> <a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a>;
<a id='L808' name='L808'></a> 808 
<a id='L809' name='L809'></a> 809     <strong class='reserved'>if</strong> (!<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_wrap_dirty.html' title='Multiple used in 22 places.'>dpy_wrap_dirty</a>)
<a id='L810' name='L810'></a> 810         <strong class='reserved'>return</strong>;
<a id='L811' name='L811'></a> 811     <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_wrap_dirty.html' title='Multiple used in 22 places.'>dpy_wrap_dirty</a> = <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L812' name='L812'></a> 812 
<a id='L813' name='L813'></a> 813     <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a> = 0;
<a id='L814' name='L814'></a> 814     <a href='../S/src--viewer--ascii.c.html#L1048' title='Defined at 1048 in src/viewer/ascii.c.'>mcview_state_machine_init</a> (&amp;<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a>, <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a>);
<a id='L815' name='L815'></a> 815 
<a id='L816' name='L816'></a> 816     <strong class='reserved'>while</strong> (<a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a>-- != 0)
<a id='L817' name='L817'></a> 817     <em class='brace'>{</em>
<a id='L818' name='L818'></a> 818         <a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> <a href='../Y/state_prev.html' title='Multiple used in 3 places.'>state_prev</a>;
<a id='L819' name='L819'></a> 819         <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a> <a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a>;
<a id='L820' name='L820'></a> 820 
<a id='L821' name='L821'></a> 821         <a href='../Y/state_prev.html' title='Multiple used in 3 places.'>state_prev</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a>;
<a id='L822' name='L822'></a> 822         <strong class='reserved'>if</strong> (<a href='../S/src--viewer--ascii.c.html#L573' title='Defined at 573 in src/viewer/ascii.c.'>mcview_display_line</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, &amp;<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a>, -1, &amp;<a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>) == 0)
<a id='L823' name='L823'></a> 823             <strong class='reserved'>break</strong>;
<a id='L824' name='L824'></a> 824         <strong class='reserved'>if</strong> (<a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a>)
<a id='L825' name='L825'></a> 825         <em class='brace'>{</em>
<a id='L826' name='L826'></a> 826             <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a> = <a href='../Y/state_prev.html' title='Multiple used in 3 places.'>state_prev</a>;
<a id='L827' name='L827'></a> 827             <strong class='reserved'>break</strong>;
<a id='L828' name='L828'></a> 828         <em class='brace'>}</em>
<a id='L829' name='L829'></a> 829         <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a>++;
<a id='L830' name='L830'></a> 830     <em class='brace'>}</em>
<a id='L831' name='L831'></a> 831 <em class='brace'>}</em>
<a id='L832' name='L832'></a> 832 
<a id='L833' name='L833'></a> 833 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L834' name='L834'></a> 834 <em class='comment'>/*** public functions ****************************************************************************/</em>
<a id='L835' name='L835'></a> 835 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L836' name='L836'></a> 836 
<a id='L837' name='L837'></a> 837 <em class='comment'>/**</em>
<a id='L838' name='L838'></a> 838 <em class='comment'> * In both wrap and unwrap modes, dpy_start points to the beginning of the paragraph.</em>
<a id='L839' name='L839'></a> 839 <em class='comment'> *</em>
<a id='L840' name='L840'></a> 840 <em class='comment'> * In unwrap mode, start displaying from this position, probably applying an additional horizontal</em>
<a id='L841' name='L841'></a> 841 <em class='comment'> * scroll.</em>
<a id='L842' name='L842'></a> 842 <em class='comment'> *</em>
<a id='L843' name='L843'></a> 843 <em class='comment'> * In wrap mode, an additional dpy_paragraph_skip_lines lines are skipped from the top of this</em>
<a id='L844' name='L844'></a> 844 <em class='comment'> * paragraph. dpy_state_top contains the position and parser-formatter state corresponding to the</em>
<a id='L845' name='L845'></a> 845 <em class='comment'> * top left corner so we can just start rendering from here. Unless dpy_wrap_dirty is set in which</em>
<a id='L846' name='L846'></a> 846 <em class='comment'> * case dpy_state_top is invalid and we need to recompute first.</em>
<a id='L847' name='L847'></a> 847 <em class='comment'> */</em>
<a id='L848' name='L848'></a> 848 <strong class='reserved'>void</strong>
<a id='L849' name='L849'></a> 849 <a href='../R/mcview_display_text.html' title='Multiple referred from 2 places.'>mcview_display_text</a> (<a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>)
     <em class='comment'>/* <a href='#L805'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L923'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+849 src/viewer/ascii.c'  /> */</em>
<a id='L850' name='L850'></a> 850 <em class='brace'>{</em>
<a id='L851' name='L851'></a> 851     <strong class='reserved'>const</strong> <a href='../S/src--viewer--internal.h.html#L24' title='Defined at 24 in src/viewer/internal.h.'>screen_dimen</a> <a href='../Y/left.html' title='Multiple used in 73 places.'>left</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/data_area.html' title='Multiple used in 35 places.'>data_area</a>.<a href='../Y/left.html' title='Multiple used in 73 places.'>left</a>;
<a id='L852' name='L852'></a> 852     <strong class='reserved'>const</strong> <a href='../S/src--viewer--internal.h.html#L24' title='Defined at 24 in src/viewer/internal.h.'>screen_dimen</a> <a href='../Y/top.html' title='Multiple used in 103 places.'>top</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/data_area.html' title='Multiple used in 35 places.'>data_area</a>.<a href='../Y/top.html' title='Multiple used in 103 places.'>top</a>;
<a id='L853' name='L853'></a> 853     <strong class='reserved'>const</strong> <a href='../S/src--viewer--internal.h.html#L24' title='Defined at 24 in src/viewer/internal.h.'>screen_dimen</a> <a href='../Y/height.html' title='Multiple used in 97 places.'>height</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/data_area.html' title='Multiple used in 35 places.'>data_area</a>.<a href='../Y/height.html' title='Multiple used in 97 places.'>height</a>;
<a id='L854' name='L854'></a> 854     <strong class='reserved'>int</strong> <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a>;
<a id='L855' name='L855'></a> 855     <a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>;
<a id='L856' name='L856'></a> 856     <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a> <a href='../Y/again.html' title='Multiple used in 17 places.'>again</a>;
<a id='L857' name='L857'></a> 857 
<a id='L858' name='L858'></a> 858     <strong class='reserved'>do</strong>
<a id='L859' name='L859'></a> 859     <em class='brace'>{</em>
<a id='L860' name='L860'></a> 860         <strong class='reserved'>int</strong> <a href='../Y/n.html' title='Multiple used in 370 places.'>n</a>;
<a id='L861' name='L861'></a> 861 
<a id='L862' name='L862'></a> 862         <a href='../Y/again.html' title='Multiple used in 17 places.'>again</a> = <a href='../Y/FALSE.html' title='Multiple used in 1594 places.'>FALSE</a>;
<a id='L863' name='L863'></a> 863 
<a id='L864' name='L864'></a> 864         <a href='../S/src--viewer--display.c.html#L353' title='Defined at 353 in src/viewer/display.c.'>mcview_display_clean</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>);
<a id='L865' name='L865'></a> 865         <a href='../S/src--viewer--display.c.html#L366' title='Defined at 366 in src/viewer/display.c.'>mcview_display_ruler</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>);
<a id='L866' name='L866'></a> 866 
<a id='L867' name='L867'></a> 867         <strong class='reserved'>if</strong> (!<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/mode_flags.html' title='Multiple used in 66 places.'>mode_flags</a>.<a href='../Y/wrap.html' title='Multiple used in 25 places.'>wrap</a>)
<a id='L868' name='L868'></a> 868             <a href='../S/src--viewer--ascii.c.html#L1048' title='Defined at 1048 in src/viewer/ascii.c.'>mcview_state_machine_init</a> (&amp;<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a>);
<a id='L869' name='L869'></a> 869         <strong class='reserved'>else</strong>
<a id='L870' name='L870'></a> 870         <em class='brace'>{</em>
<a id='L871' name='L871'></a> 871             <a href='../S/src--viewer--ascii.c.html#L805' title='Defined at 805 in src/viewer/ascii.c.'>mcview_wrap_fixup</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>);
<a id='L872' name='L872'></a> 872             <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a>;
<a id='L873' name='L873'></a> 873         <em class='brace'>}</em>
<a id='L874' name='L874'></a> 874 
<a id='L875' name='L875'></a> 875         <strong class='reserved'>for</strong> (<a href='../Y/row.html' title='Multiple used in 70 places.'>row</a> = 0; <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a> &lt; (<strong class='reserved'>int</strong>) <a href='../Y/height.html' title='Multiple used in 97 places.'>height</a>; <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a> += <a href='../Y/n.html' title='Multiple used in 370 places.'>n</a>)
<a id='L876' name='L876'></a> 876         <em class='brace'>{</em>
<a id='L877' name='L877'></a> 877             <a href='../Y/n.html' title='Multiple used in 370 places.'>n</a> = <a href='../S/src--viewer--ascii.c.html#L768' title='Defined at 768 in src/viewer/ascii.c.'>mcview_display_paragraph</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, &amp;<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a>);
<a id='L878' name='L878'></a> 878             <strong class='reserved'>if</strong> (<a href='../Y/n.html' title='Multiple used in 370 places.'>n</a> == 0)
<a id='L879' name='L879'></a> 879             <em class='brace'>{</em>
<a id='L880' name='L880'></a> 880                 <em class='comment'>/* In the rare case that displaying didn't start at the beginning</em>
<a id='L881' name='L881'></a> 881 <em class='comment'>                 * of the file, yet there are some empty lines at the bottom,</em>
<a id='L882' name='L882'></a> 882 <em class='comment'>                 * scroll the file and display again. This happens when e.g. the</em>
<a id='L883' name='L883'></a> 883 <em class='comment'>                 * window is made bigger, or the file becomes shorter due to</em>
<a id='L884' name='L884'></a> 884 <em class='comment'>                 * charset change or enabling nroff. */</em>
<a id='L885' name='L885'></a> 885                 <strong class='reserved'>if</strong> ((<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/mode_flags.html' title='Multiple used in 66 places.'>mode_flags</a>.<a href='../Y/wrap.html' title='Multiple used in 25 places.'>wrap</a> ? <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a>.<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a> : <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a>) &gt; 0)
<a id='L886' name='L886'></a> 886                 <em class='brace'>{</em>
<a id='L887' name='L887'></a> 887                     <a href='../S/src--viewer--ascii.c.html#L972' title='Defined at 972 in src/viewer/ascii.c.'>mcview_ascii_move_up</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/height.html' title='Multiple used in 97 places.'>height</a> - <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a>);
<a id='L888' name='L888'></a> 888                     <a href='../Y/again.html' title='Multiple used in 17 places.'>again</a> = <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L889' name='L889'></a> 889                 <em class='brace'>}</em>
<a id='L890' name='L890'></a> 890                 <strong class='reserved'>break</strong>;
<a id='L891' name='L891'></a> 891             <em class='brace'>}</em>
<a id='L892' name='L892'></a> 892         <em class='brace'>}</em>
<a id='L893' name='L893'></a> 893     <em class='brace'>}</em>
<a id='L894' name='L894'></a> 894     <strong class='reserved'>while</strong> (<a href='../Y/again.html' title='Multiple used in 17 places.'>again</a>);
<a id='L895' name='L895'></a> 895 
<a id='L896' name='L896'></a> 896     <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_end.html' title='Multiple used in 7 places.'>dpy_end</a> = <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>.<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a>;
<a id='L897' name='L897'></a> 897     <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_bottom.html' title='Multiple used in 3 places.'>dpy_state_bottom</a> = <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>;
<a id='L898' name='L898'></a> 898 
<a id='L899' name='L899'></a> 899     <a href='../D/tty_setcolor.html' title='Multiple defined in 2 places.'>tty_setcolor</a> (<a href='../S/lib--skin.h.html#L79' title='Defined at 79 in lib/skin.h.'>VIEW_NORMAL_COLOR</a>);
<a id='L900' name='L900'></a> 900     <strong class='reserved'>if</strong> (<a href='../Y/mcview_show_eof.html' title='Multiple used in 5 places.'>mcview_show_eof</a> != <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a> &amp;&amp; <a href='../Y/mcview_show_eof.html' title='Multiple used in 5 places.'>mcview_show_eof</a>[0] != '\0')
<a id='L901' name='L901'></a> 901         <strong class='reserved'>while</strong> (<a href='../Y/row.html' title='Multiple used in 70 places.'>row</a> &lt; (<strong class='reserved'>int</strong>) <a href='../Y/height.html' title='Multiple used in 97 places.'>height</a>)
<a id='L902' name='L902'></a> 902         <em class='brace'>{</em>
<a id='L903' name='L903'></a> 903             <a href='../S/lib--widget--widget-common.h.html#L18' title='Defined at 18 in lib/widget/widget-common.h.'>widget_gotoyx</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/top.html' title='Multiple used in 103 places.'>top</a> + <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a>, <a href='../Y/left.html' title='Multiple used in 73 places.'>left</a>);
<a id='L904' name='L904'></a> 904             <em class='comment'>/* TODO: should make it no wider than the viewport */</em>
<a id='L905' name='L905'></a> 905             <a href='../D/tty_print_string.html' title='Multiple defined in 2 places.'>tty_print_string</a> (<a href='../Y/mcview_show_eof.html' title='Multiple used in 5 places.'>mcview_show_eof</a>);
<a id='L906' name='L906'></a> 906             <a href='../Y/row.html' title='Multiple used in 70 places.'>row</a>++;
<a id='L907' name='L907'></a> 907         <em class='brace'>}</em>
<a id='L908' name='L908'></a> 908 <em class='brace'>}</em>
<a id='L909' name='L909'></a> 909 
<a id='L910' name='L910'></a> 910 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L911' name='L911'></a> 911 <em class='comment'>/**</em>
<a id='L912' name='L912'></a> 912 <em class='comment'> * Move down.</em>
<a id='L913' name='L913'></a> 913 <em class='comment'> *</em>
<a id='L914' name='L914'></a> 914 <em class='comment'> * It's very simple. Just invisibly format the next "lines" lines, carefully carrying the formatter</em>
<a id='L915' name='L915'></a> 915 <em class='comment'> * state in wrap mode. But before each step we need to check if we've already hit the end of the</em>
<a id='L916' name='L916'></a> 916 <em class='comment'> * file, in that case we can no longer move. This is done by walking from dpy_state_bottom.</em>
<a id='L917' name='L917'></a> 917 <em class='comment'> *</em>
<a id='L918' name='L918'></a> 918 <em class='comment'> * Note that this relies on mcview_display_text() setting dpy_state_bottom to its correct value</em>
<a id='L919' name='L919'></a> 919 <em class='comment'> * upon rendering the screen contents. So don't call this function from other functions (e.g. at</em>
<a id='L920' name='L920'></a> 920 <em class='comment'> * the bottom of mcview_ascii_move_up()) which invalidate this value.</em>
<a id='L921' name='L921'></a> 921 <em class='comment'> */</em>
<a id='L922' name='L922'></a> 922 <strong class='reserved'>void</strong>
<a id='L923' name='L923'></a> 923 <a href='../R/mcview_ascii_move_down.html' title='Multiple referred from 2 places.'>mcview_ascii_move_down</a> (<a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a> <a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a>)
     <em class='comment'>/* <a href='#L849'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L972'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+923 src/viewer/ascii.c'  /> */</em>
<a id='L924' name='L924'></a> 924 <em class='brace'>{</em>
<a id='L925' name='L925'></a> 925     <strong class='reserved'>while</strong> (<a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a>-- != 0)
<a id='L926' name='L926'></a> 926     <em class='brace'>{</em>
<a id='L927' name='L927'></a> 927         <a href='../Y/gboolean.html' title='Multiple used in 1757 places.'>gboolean</a> <a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a>;
<a id='L928' name='L928'></a> 928 
<a id='L929' name='L929'></a> 929         <em class='comment'>/* See if there's still data below the bottom line, by imaginarily displaying one</em>
<a id='L930' name='L930'></a> 930 <em class='comment'>         * more line. This takes care of reading more data into growbuf, if required.</em>
<a id='L931' name='L931'></a> 931 <em class='comment'>         * If the end position didn't advance, we're at EOF and hence bail out. */</em>
<a id='L932' name='L932'></a> 932         <strong class='reserved'>if</strong> (<a href='../S/src--viewer--ascii.c.html#L573' title='Defined at 573 in src/viewer/ascii.c.'>mcview_display_line</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, &amp;<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_bottom.html' title='Multiple used in 3 places.'>dpy_state_bottom</a>, -1, &amp;<a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>) == 0)
<a id='L933' name='L933'></a> 933             <strong class='reserved'>break</strong>;
<a id='L934' name='L934'></a> 934 
<a id='L935' name='L935'></a> 935         <em class='comment'>/* Okay, there's enough data. Move by 1 row at the top, too. No need to check for</em>
<a id='L936' name='L936'></a> 936 <em class='comment'>         * EOF, that can't happen. */</em>
<a id='L937' name='L937'></a> 937         <strong class='reserved'>if</strong> (!<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/mode_flags.html' title='Multiple used in 66 places.'>mode_flags</a>.<a href='../Y/wrap.html' title='Multiple used in 25 places.'>wrap</a>)
<a id='L938' name='L938'></a> 938         <em class='brace'>{</em>
<a id='L939' name='L939'></a> 939             <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a> = <a href='../S/src--viewer--lib.c.html#L347' title='Defined at 347 in src/viewer/lib.c.'>mcview_eol</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a>);
<a id='L940' name='L940'></a> 940             <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a> = 0;
<a id='L941' name='L941'></a> 941             <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_wrap_dirty.html' title='Multiple used in 22 places.'>dpy_wrap_dirty</a> = <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L942' name='L942'></a> 942         <em class='brace'>}</em>
<a id='L943' name='L943'></a> 943         <strong class='reserved'>else</strong>
<a id='L944' name='L944'></a> 944         <em class='brace'>{</em>
<a id='L945' name='L945'></a> 945             <a href='../S/src--viewer--ascii.c.html#L573' title='Defined at 573 in src/viewer/ascii.c.'>mcview_display_line</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, &amp;<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a>, -1, &amp;<a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L946' name='L946'></a> 946             <strong class='reserved'>if</strong> (!<a href='../Y/paragraph_ended.html' title='Multiple used in 15 places.'>paragraph_ended</a>)
<a id='L947' name='L947'></a> 947                 <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a>++;
<a id='L948' name='L948'></a> 948             <strong class='reserved'>else</strong>
<a id='L949' name='L949'></a> 949             <em class='brace'>{</em>
<a id='L950' name='L950'></a> 950                 <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a>.<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a>;
<a id='L951' name='L951'></a> 951                 <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a> = 0;
<a id='L952' name='L952'></a> 952             <em class='brace'>}</em>
<a id='L953' name='L953'></a> 953         <em class='brace'>}</em>
<a id='L954' name='L954'></a> 954     <em class='brace'>}</em>
<a id='L955' name='L955'></a> 955 <em class='brace'>}</em>
<a id='L956' name='L956'></a> 956 
<a id='L957' name='L957'></a> 957 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L958' name='L958'></a> 958 <em class='comment'>/**</em>
<a id='L959' name='L959'></a> 959 <em class='comment'> * Move up.</em>
<a id='L960' name='L960'></a> 960 <em class='comment'> *</em>
<a id='L961' name='L961'></a> 961 <em class='comment'> * Unwrap mode: Piece of cake. Wrap mode: If we'd walk back more than the current line offset</em>
<a id='L962' name='L962'></a> 962 <em class='comment'> * within the paragraph, we need to jump back to the previous paragraph and compute its height to</em>
<a id='L963' name='L963'></a> 963 <em class='comment'> * see if we start from that paragraph, and repeat this if necessary. Once we're within the desired</em>
<a id='L964' name='L964'></a> 964 <em class='comment'> * paragraph, we still need to format it from its beginning to know the state.</em>
<a id='L965' name='L965'></a> 965 <em class='comment'> *</em>
<a id='L966' name='L966'></a> 966 <em class='comment'> * See the top of this file for comments about MAX_BACKWARDS_WALK_IN_PARAGRAPH.</em>
<a id='L967' name='L967'></a> 967 <em class='comment'> *</em>
<a id='L968' name='L968'></a> 968 <em class='comment'> * force_max is a nice protection against the rare extreme case that the file underneath us</em>
<a id='L969' name='L969'></a> 969 <em class='comment'> * changes, we don't want to endlessly consume a file of maybe full of zeros upon moving upwards.</em>
<a id='L970' name='L970'></a> 970 <em class='comment'> */</em>
<a id='L971' name='L971'></a> 971 <strong class='reserved'>void</strong>
<a id='L972' name='L972'></a> 972 <a href='../R/mcview_ascii_move_up.html' title='Multiple referred from 3 places.'>mcview_ascii_move_up</a> (<a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a> <a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a>)
     <em class='comment'>/* <a href='#L923'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L1022'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+972 src/viewer/ascii.c'  /> */</em>
<a id='L973' name='L973'></a> 973 <em class='brace'>{</em>
<a id='L974' name='L974'></a> 974     <strong class='reserved'>if</strong> (!<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/mode_flags.html' title='Multiple used in 66 places.'>mode_flags</a>.<a href='../Y/wrap.html' title='Multiple used in 25 places.'>wrap</a>)
<a id='L975' name='L975'></a> 975     <em class='brace'>{</em>
<a id='L976' name='L976'></a> 976         <strong class='reserved'>while</strong> (<a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a>-- != 0)
<a id='L977' name='L977'></a> 977             <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a> = <a href='../S/src--viewer--lib.c.html#L312' title='Defined at 312 in src/viewer/lib.c.'>mcview_bol</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a> - 1, 0);
<a id='L978' name='L978'></a> 978         <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a> = 0;
<a id='L979' name='L979'></a> 979         <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_wrap_dirty.html' title='Multiple used in 22 places.'>dpy_wrap_dirty</a> = <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L980' name='L980'></a> 980     <em class='brace'>}</em>
<a id='L981' name='L981'></a> 981     <strong class='reserved'>else</strong>
<a id='L982' name='L982'></a> 982     <em class='brace'>{</em>
<a id='L983' name='L983'></a> 983         <strong class='reserved'>int</strong> <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>;
<a id='L984' name='L984'></a> 984 
<a id='L985' name='L985'></a> 985         <strong class='reserved'>while</strong> (<a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a> &gt; <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a>)
<a id='L986' name='L986'></a> 986         <em class='brace'>{</em>
<a id='L987' name='L987'></a> 987             <em class='comment'>/* We need to go back to the previous paragraph. */</em>
<a id='L988' name='L988'></a> 988             <strong class='reserved'>if</strong> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a> == 0)
<a id='L989' name='L989'></a> 989             <em class='brace'>{</em>
<a id='L990' name='L990'></a> 990                 <em class='comment'>/* Oops, we're already in the first paragraph. */</em>
<a id='L991' name='L991'></a> 991                 <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a> = 0;
<a id='L992' name='L992'></a> 992                 <a href='../S/src--viewer--ascii.c.html#L1048' title='Defined at 1048 in src/viewer/ascii.c.'>mcview_state_machine_init</a> (&amp;<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a>, 0);
<a id='L993' name='L993'></a> 993                 <strong class='reserved'>return</strong>;
<a id='L994' name='L994'></a> 994             <em class='brace'>}</em>
<a id='L995' name='L995'></a> 995             <a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a> -= <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a>;
<a id='L996' name='L996'></a> 996             <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/force_max.html' title='Multiple used in 7 places.'>force_max</a> = <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a>;
<a id='L997' name='L997'></a> 997             <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a> =
<a id='L998' name='L998'></a> 998                 <a href='../S/src--viewer--lib.c.html#L312' title='Defined at 312 in src/viewer/lib.c.'>mcview_bol</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a> - 1,
<a id='L999' name='L999'></a> 999                             <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a> - <a href='../S/src--viewer--ascii.c.html#L188' title='Defined at 188 in src/viewer/ascii.c.'>MAX_BACKWARDS_WALK_IN_PARAGRAPH</a>);
<a id='L1000' name='L1000'></a>1000             <a href='../S/src--viewer--ascii.c.html#L1048' title='Defined at 1048 in src/viewer/ascii.c.'>mcview_state_machine_init</a> (&amp;<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a>, <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a>);
<a id='L1001' name='L1001'></a>1001             <em class='comment'>/* This is a tricky way of denoting that we're at the end of the paragraph.</em>
<a id='L1002' name='L1002'></a>1002 <em class='comment'>             * Normally we'd jump to the next paragraph and reset paragraph_skip_lines. But for</em>
<a id='L1003' name='L1003'></a>1003 <em class='comment'>             * walking backwards this is exactly what we need. */</em>
<a id='L1004' name='L1004'></a>1004             <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a> =
<a id='L1005' name='L1005'></a>1005                 <a href='../S/src--viewer--ascii.c.html#L768' title='Defined at 768 in src/viewer/ascii.c.'>mcview_display_paragraph</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, &amp;<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a>, <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/data_area.html' title='Multiple used in 35 places.'>data_area</a>.<a href='../Y/height.html' title='Multiple used in 97 places.'>height</a>);
<a id='L1006' name='L1006'></a>1006             <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/force_max.html' title='Multiple used in 7 places.'>force_max</a> = -1;
<a id='L1007' name='L1007'></a>1007         <em class='brace'>}</em>
<a id='L1008' name='L1008'></a>1008 
<a id='L1009' name='L1009'></a>1009         <em class='comment'>/* Okay, we have have dpy_start pointing to the desired paragraph, and we still need to</em>
<a id='L1010' name='L1010'></a>1010 <em class='comment'>         * walk back "lines" lines from the current "dpy_paragraph_skip_lines" offset. We can't do</em>
<a id='L1011' name='L1011'></a>1011 <em class='comment'>         * that, so walk from the beginning of the paragraph. */</em>
<a id='L1012' name='L1012'></a>1012         <a href='../S/src--viewer--ascii.c.html#L1048' title='Defined at 1048 in src/viewer/ascii.c.'>mcview_state_machine_init</a> (&amp;<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a>, <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a>);
<a id='L1013' name='L1013'></a>1013         <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a> -= <a href='../Y/lines.html' title='Multiple used in 415 places.'>lines</a>;
<a id='L1014' name='L1014'></a>1014         <strong class='reserved'>for</strong> (<a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> = 0; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a> &lt; <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_paragraph_skip_lines.html' title='Multiple used in 27 places.'>dpy_paragraph_skip_lines</a>; <a href='../Y/i.html' title='Multiple used in 2441 places.'>i</a>++)
<a id='L1015' name='L1015'></a>1015             <a href='../S/src--viewer--ascii.c.html#L573' title='Defined at 573 in src/viewer/ascii.c.'>mcview_display_line</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, &amp;<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_state_top.html' title='Multiple used in 17 places.'>dpy_state_top</a>, -1, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>);
<a id='L1016' name='L1016'></a>1016     <em class='brace'>}</em>
<a id='L1017' name='L1017'></a>1017 <em class='brace'>}</em>
<a id='L1018' name='L1018'></a>1018 
<a id='L1019' name='L1019'></a>1019 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L1020' name='L1020'></a>1020 
<a id='L1021' name='L1021'></a>1021 <strong class='reserved'>void</strong>
<a id='L1022' name='L1022'></a>1022 <a href='../R/mcview_ascii_moveto_bol.html' title='Multiple referred from 2 places.'>mcview_ascii_moveto_bol</a> (<a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>)
     <em class='comment'>/* <a href='#L972'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L1031'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1022 src/viewer/ascii.c'  /> */</em>
<a id='L1023' name='L1023'></a>1023 <em class='brace'>{</em>
<a id='L1024' name='L1024'></a>1024     <strong class='reserved'>if</strong> (!<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/mode_flags.html' title='Multiple used in 66 places.'>mode_flags</a>.<a href='../Y/wrap.html' title='Multiple used in 25 places.'>wrap</a>)
<a id='L1025' name='L1025'></a>1025         <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a> = 0;
<a id='L1026' name='L1026'></a>1026 <em class='brace'>}</em>
<a id='L1027' name='L1027'></a>1027 
<a id='L1028' name='L1028'></a>1028 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L1029' name='L1029'></a>1029 
<a id='L1030' name='L1030'></a>1030 <strong class='reserved'>void</strong>
<a id='L1031' name='L1031'></a>1031 <a href='../R/mcview_ascii_moveto_eol.html' title='Multiple referred from 2 places.'>mcview_ascii_moveto_eol</a> (<a href='../D/WView.html' title='Multiple defined in 2 places.'>WView</a> * <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>)
     <em class='comment'>/* <a href='#L1022'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><a href='#L1048'><img class='icon' src='../icons/right.png' alt='[next]' /></a><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1031 src/viewer/ascii.c'  /> */</em>
<a id='L1032' name='L1032'></a>1032 <em class='brace'>{</em>
<a id='L1033' name='L1033'></a>1033     <strong class='reserved'>if</strong> (!<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/mode_flags.html' title='Multiple used in 66 places.'>mode_flags</a>.<a href='../Y/wrap.html' title='Multiple used in 25 places.'>wrap</a>)
<a id='L1034' name='L1034'></a>1034     <em class='brace'>{</em>
<a id='L1035' name='L1035'></a>1035         <a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>;
<a id='L1036' name='L1036'></a>1036         <a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a> <a href='../Y/linewidth.html' title='Multiple used in 12 places.'>linewidth</a>;
<a id='L1037' name='L1037'></a>1037 
<a id='L1038' name='L1038'></a>1038         <em class='comment'>/* Get the width of the topmost paragraph. */</em>
<a id='L1039' name='L1039'></a>1039         <a href='../S/src--viewer--ascii.c.html#L1048' title='Defined at 1048 in src/viewer/ascii.c.'>mcview_state_machine_init</a> (&amp;<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_start.html' title='Multiple used in 39 places.'>dpy_start</a>);
<a id='L1040' name='L1040'></a>1040         <a href='../S/src--viewer--ascii.c.html#L573' title='Defined at 573 in src/viewer/ascii.c.'>mcview_display_line</a> (<a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>, &amp;<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, -1, <a href='../Y/NULL.html' title='Multiple used in 5646 places.'>NULL</a>, &amp;<a href='../Y/linewidth.html' title='Multiple used in 12 places.'>linewidth</a>);
<a id='L1041' name='L1041'></a>1041         <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/dpy_text_column.html' title='Multiple used in 25 places.'>dpy_text_column</a> = <a href='../S/src--viewer--inlines.h.html#L23' title='Defined at 23 in src/viewer/inlines.h.'>mcview_offset_doz</a> (<a href='../Y/linewidth.html' title='Multiple used in 12 places.'>linewidth</a>, (<a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a>) <a href='../Y/view.html' title='Multiple used in 1205 places.'>view</a>-&gt;<a href='../Y/data_area.html' title='Multiple used in 35 places.'>data_area</a>.<a href='../Y/width.html' title='Multiple used in 278 places.'>width</a>);
<a id='L1042' name='L1042'></a>1042     <em class='brace'>}</em>
<a id='L1043' name='L1043'></a>1043 <em class='brace'>}</em>
<a id='L1044' name='L1044'></a>1044 
<a id='L1045' name='L1045'></a>1045 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
<a id='L1046' name='L1046'></a>1046 
<a id='L1047' name='L1047'></a>1047 <strong class='reserved'>void</strong>
<a id='L1048' name='L1048'></a>1048 <a href='../R/mcview_state_machine_init.html' title='Multiple referred from 13 places.'>mcview_state_machine_init</a> (<a href='../S/src--viewer--internal.h.html#L97' title='Defined at 97 in src/viewer/internal.h.'>mcview_state_machine_t</a> * <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, <a href='../Y/off_t.html' title='Multiple used in 521 places.'>off_t</a> <a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a>)
     <em class='comment'>/* <a href='#L1031'><img class='icon' src='../icons/left.png' alt='[previous]' /></a><img class='icon' src='../icons/n_right.png' alt='[next]' /><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><img class='icon' src='../icons/n_last.png' alt='[last]' /><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><a href='#BOTTOM'><img class='icon' src='../icons/bottom.png' alt='[bottom]' /></a><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1048 src/viewer/ascii.c'  /> */</em>
<a id='L1049' name='L1049'></a>1049 <em class='brace'>{</em>
<a id='L1050' name='L1050'></a>1050     <a href='../Y/memset.html' title='Multiple used in 162 places.'>memset</a> (<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>, 0, <strong class='reserved'>sizeof</strong> (*<a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>));
<a id='L1051' name='L1051'></a>1051     <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a> = <a href='../Y/offset.html' title='Multiple used in 365 places.'>offset</a>;
<a id='L1052' name='L1052'></a>1052     <a href='../Y/state.html' title='Multiple used in 288 places.'>state</a>-&gt;<a href='../Y/print_lonely_combining.html' title='Multiple used in 5 places.'>print_lonely_combining</a> = <a href='../Y/TRUE.html' title='Multiple used in 1520 places.'>TRUE</a>;
<a id='L1053' name='L1053'></a>1053 <em class='brace'>}</em>
<a id='L1054' name='L1054'></a>1054 
<a id='L1055' name='L1055'></a>1055 <em class='comment'>/* --------------------------------------------------------------------------------------------- */</em>
</pre>
<hr />
<a id='BOTTOM' name='BOTTOM'></a>
<em class='comment'>/* <img class='icon' src='../icons/n_left.png' alt='[previous]' /><img class='icon' src='../icons/n_right.png' alt='[next]' /><a href='#L201'><img class='icon' src='../icons/first.png' alt='[first]' /></a><a href='#L1048'><img class='icon' src='../icons/last.png' alt='[last]' /></a><a href='#TOP'><img class='icon' src='../icons/top.png' alt='[top]' /></a><img class='icon' src='../icons/n_bottom.png' alt='[bottom]' /><a href='../mains.html'><img class='icon' src='../icons/index.png' alt='[index]' /></a><a href='../help.html'><img class='icon' src='../icons/help.png' alt='[help]' /></a>&nbsp;<input type='text' readonly onfocus='this.select();' value='+1055 src/viewer/ascii.c'  /> */</em>
</body>
</html>
